]> git.cworth.org Git - apitrace/blob - loadertest.cpp
Show number of calls per frame.
[apitrace] / loadertest.cpp
1 #include "trace_loader.hpp"
2 #include "os.hpp"
3
4 #include <iostream>
5
6
7 static const double msecsInSec = 1000000;
8
9 static void timeFrameFetch(Trace::Loader &loader, unsigned frameIdx)
10 {
11     long long t1, t2;
12     std::vector<Trace::Call*> frame;
13
14     t1 = OS::GetTime();
15     frame = loader.frame(frameIdx);
16     t2 = OS::GetTime();
17     std::cout << "Time to fetch the frame["
18               << frameIdx
19               << "] size "
20               << frame.size()
21               << " is = "
22               << (t2 - t1)/msecsInSec
23               << " secs "<<std::endl;
24
25     for (unsigned i = 0; i < frame.size(); ++i) {
26         delete frame[i];
27     }
28 }
29
30
31 int main(int argc, char **argv)
32 {
33     int i;
34
35     for (i = 1; i < argc; ++i) {
36         Trace::Loader loader;
37
38         long long t1 = OS::GetTime();
39         if (!loader.open(argv[i])) {
40             std::cerr << "error: failed to open " << argv[i] << "\n";
41             return 1;
42         }
43         long long t2 = OS::GetTime();
44         std::cout << "Time to scan file = "<< (t2 - t1)/msecsInSec
45                   << " secs "<<std::endl;
46
47         std::cout << "Number of frames = "
48                   << loader.numberOfFrames()
49                   << std::endl;
50         std::cout << "Number of calls in frame 0 = "
51                   << loader.numberOfCallsInFrame(0)
52                   << std::endl;
53         int lastFrame = loader.numberOfFrames() - 1;
54         std::cout << "Number of calls in frame "
55                   << lastFrame << " = "
56                   << loader.numberOfCallsInFrame(lastFrame)
57                   << std::endl;
58
59         unsigned biggestFrameIdx = 0;
60         unsigned maxFrameSize = 0;
61         for (unsigned i = 0; i < loader.numberOfFrames(); ++i) {
62             if (loader.numberOfCallsInFrame(i) > maxFrameSize) {
63                 maxFrameSize = loader.numberOfCallsInFrame(i);
64                 biggestFrameIdx = i;
65             }
66         }
67
68         timeFrameFetch(loader, loader.numberOfFrames()/2);
69         timeFrameFetch(loader, 0);
70         timeFrameFetch(loader, loader.numberOfFrames() - 1);
71         timeFrameFetch(loader, biggestFrameIdx);
72     }
73
74     return 0;
75 }
76