All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
perfmon.cc
Go to the documentation of this file.
1 /* perfmon.cc
2  */
3 #include "osl/misc/perfmon.h"
4 #include <boost/lexical_cast.hpp>
5 #include <iostream>
6 #include <iomanip>
7 
8 #ifndef _MSC_VER
9 void osl::misc::PerfMon::message(unsigned long long cycles,
10  const char *message,long long int loop)
11 {
12 #ifdef HAVE_TSC
13  const char *unit = "clocks";
14 #else
15  const char *unit = "microSecs";
16 #endif
17  std::cerr << std::dec << message << " : take " << cycles
18  << " " << unit << ", loop= " << loop;
19  if (loop)
20  std::cerr << " clocks/loop= " << (cycles/loop) << "."
21  << std::setfill('0') << std::setw(2)
22  << (cycles*100/loop)-(cycles/loop)*100;
23  std::cerr << std::endl;
24 }
25 
27 CounterPair(const char *file, const char *function, int line)
28  : counter1(0), counter2(0),
29  message(std::string(file)+":"+(function)+":"+boost::lexical_cast<std::string>(line))
30 {
31 }
32 
34 {
35  std::cerr << message << " " << counter1 << "/" << counter2;
36  if(counter2!=0) std::cerr << " = " << (double)counter1/(double)counter2;
37  std::cerr << std::endl;
38 }
39 
41 {
42  timeval end;
43  gettimeofday(&end, NULL);
44 
45  end.tv_usec -= start.tv_usec;
46 
47  if (end.tv_usec < 0)
48  {
49  end.tv_usec += 1000000;
50  --end.tv_sec;
51  }
52  end.tv_sec -= start.tv_sec;
53 
54  os << message << "\t"
55  << end.tv_sec << ":" << end.tv_usec
56  << std::endl;
57 }
58 #endif
59 /* ------------------------------------------------------------------------- */
60 // ;;; Local Variables:
61 // ;;; mode:c++
62 // ;;; c-basic-offset:2
63 // ;;; End: