#include "trace_loader.hpp"
+#include "os.hpp"
#include <iostream>
+
+static const double msecsInSec = 1000000;
+
+static void timeFrameFetch(Trace::Loader &loader, unsigned frameIdx)
+{
+ long long t1, t2;
+ std::vector<Trace::Call*> frame;
+
+ t1 = OS::GetTime();
+ frame = loader.frame(frameIdx);
+ t2 = OS::GetTime();
+ std::cout << "Time to fetch the frame["
+ << frameIdx
+ << "] size "
+ << frame.size()
+ << " is = "
+ << (t2 - t1)/msecsInSec
+ << " secs "<<std::endl;
+}
+
+
int main(int argc, char **argv)
{
int i;
for (i = 1; i < argc; ++i) {
Trace::Loader loader;
+ long long t1 = OS::GetTime();
if (!loader.open(argv[i])) {
std::cerr << "error: failed to open " << argv[i] << "\n";
return 1;
}
+ long long t2 = OS::GetTime();
+ std::cout << "Time to scan file = "<< (t2 - t1)/msecsInSec
+ << " secs "<<std::endl;
std::cout << "Number of frames = "
<< loader.numberOfFrames()
<< loader.numberOfCallsInFrame(lastFrame)
<< std::endl;
-
- std::vector<Trace::Call*> frame = loader.frame(
- loader.numberOfFrames()/2);
- std::vector<Trace::Call*>::const_iterator itr;
- for (itr = frame.begin(); itr != frame.end(); ++itr) {
- (*itr)->dump(std::cout, true);
+ unsigned biggestFrameIdx = 0;
+ unsigned maxFrameSize = 0;
+ for (unsigned i = 0; i < loader.numberOfFrames(); ++i) {
+ if (loader.numberOfCallsInFrame(i) > maxFrameSize) {
+ maxFrameSize = loader.numberOfCallsInFrame(i);
+ biggestFrameIdx = i;
+ }
}
- }
+ timeFrameFetch(loader, loader.numberOfFrames()/2);
+ timeFrameFetch(loader, 0);
+ timeFrameFetch(loader, loader.numberOfFrames() - 1);
+ timeFrameFetch(loader, biggestFrameIdx);
+ }
return 0;
}