00001
00002
00003 #include "osl/misc/perfmon.h"
00004 #include <iostream>
00005 #include <iomanip>
00006
00007 void osl::misc::PerfMon::message(unsigned long long cycles,
00008 const char *message,long long int loop)
00009 {
00010 #ifdef HAVE_TSC
00011 const char *unit = "clocks";
00012 #else
00013 const char *unit = "microSecs";
00014 #endif
00015 std::cerr << std::dec << message << " : take " << cycles
00016 << " " << unit << ", loop= " << loop;
00017 if (loop)
00018 std::cerr << " clocks/loop= " << (cycles/loop) << "."
00019 << std::setfill('0') << std::setw(2)
00020 << (cycles*100/loop)-(cycles/loop)*100;
00021 std::cerr << std::endl;
00022 }
00023
00024 osl::misc::MeasureTimeLock::~MeasureTimeLock ()
00025 {
00026 timeval end;
00027 gettimeofday(&end, NULL);
00028
00029 end.tv_usec -= start.tv_usec;
00030
00031 if (end.tv_usec < 0)
00032 {
00033 end.tv_usec += 1000000;
00034 --end.tv_sec;
00035 }
00036 end.tv_sec -= start.tv_sec;
00037
00038 os << message << "\t"
00039 << end.tv_sec << ":" << end.tv_usec
00040 << std::endl;
00041 }
00042
00043
00044
00045
00046
00047