Go to the documentation of this file.00001
00002
00003 #include "osl/misc/perfmon.h"
00004 #include <boost/lexical_cast.hpp>
00005 #include <iostream>
00006 #include <iomanip>
00007
00008 #ifndef _MSC_VER
00009 void osl::misc::PerfMon::message(unsigned long long cycles,
00010 const char *message,long long int loop)
00011 {
00012 #ifdef HAVE_TSC
00013 const char *unit = "clocks";
00014 #else
00015 const char *unit = "microSecs";
00016 #endif
00017 std::cerr << std::dec << message << " : take " << cycles
00018 << " " << unit << ", loop= " << loop;
00019 if (loop)
00020 std::cerr << " clocks/loop= " << (cycles/loop) << "."
00021 << std::setfill('0') << std::setw(2)
00022 << (cycles*100/loop)-(cycles/loop)*100;
00023 std::cerr << std::endl;
00024 }
00025
00026 osl::misc::CounterPair::
00027 CounterPair(const char *file, const char *function, int line)
00028 : counter1(0), counter2(0),
00029 message(std::string(file)+":"+(function)+":"+boost::lexical_cast<std::string>(line))
00030 {
00031 }
00032
00033 osl::misc::CounterPair::~CounterPair()
00034 {
00035 std::cerr << message << " " << counter1 << "/" << counter2;
00036 if(counter2!=0) std::cerr << " = " << (double)counter1/(double)counter2;
00037 std::cerr << std::endl;
00038 }
00039
00040 osl::misc::MeasureTimeLock::~MeasureTimeLock ()
00041 {
00042 timeval end;
00043 gettimeofday(&end, NULL);
00044
00045 end.tv_usec -= start.tv_usec;
00046
00047 if (end.tv_usec < 0)
00048 {
00049 end.tv_usec += 1000000;
00050 --end.tv_sec;
00051 }
00052 end.tv_sec -= start.tv_sec;
00053
00054 os << message << "\t"
00055 << end.tv_sec << ":" << end.tv_usec
00056 << std::endl;
00057 }
00058 #endif
00059
00060
00061
00062
00063