Hi All..

I have developed a tool in C++ and I want to check the performance of the tool using callgrind.

For the first time I have executed my tool with different input sets and I have taken the number of instruction cycles as the referance for further usage.

Following are my referance results:
Expected Count : 14884726 - with one set of inputs
Expected Count : 16556159 - with another set of inputs
Expected Count : 15693275 - with another set of inputs

After getting this referance results I have re-run my tool with the same set of inputs for multiple times. For each time I am not getting the same (even Identicle) instruction cycle counts.
Following are the generated instruction cycle counts:

For first time

Generated Count : 14884568
Expected Count : 14884726

Generated Count : 16556023
Expected Count : 16556159

Generated Count : 15693195
Expected Count : 15693275

For second time

Generated Count : 14884590
Expected Count : 14884726

Generated Count : 16556050
Expected Count : 16556159

Generated Count : 15693241
Expected Count : 15693275

For Third time

Generated Count : 14884636
Expected Count : 14884726

Generated Count : 16556091
Expected Count : 16556159

Generated Count : 15693195
Expected Count : 15693275


I am using RHEL 5 machine. Is it OK to generate the number of instruction cycles with differance in 100s?

My Query is, I am using the same machine and running the same program with same input set, why this callgrind generating different instruction cycle counts. :?:

Thanks in advance.....

My guess is that the difference is due to running the program on a multi-threaded operating system such as *nix and MS-Windows. The operating system is doing a lot more things than just running your program.

As per my understandings, callgrind just counts the number of instructions that a program required to completes its execution.

For checking this I have written a simple program which allocates a bunch of memory and frees the allocated memory. I have printed the number of instruction cycles counted by callgrind. I am getting the same number for multiple times. Then I have tried to do the same allocation and freeing in a loop and execute the same program multiple times and I get the same instruction cycle count for each run.

The tool I am using is a single threaded tool. I think callgrind doesn't consider the instruction cycles required for swapping or operations done by OS for allocation and de allocating memory for the process.

This article has been dead for over six months. Start a new discussion instead.