perfmon.cc
Go to the documentation of this file.
00001 /* perfmon.cc
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 // ;;; Local Variables:
00061 // ;;; mode:c++
00062 // ;;; c-basic-offset:2
00063 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines