Measuring execution time of selected loops

Posted by user95281 on Stack Overflow See other posts from Stack Overflow or by user95281
Published on 2010-04-29T18:43:07Z Indexed on 2010/04/29 18:47 UTC
Read the original article Hit count: 372

I want to measure the running times of selected loops in a C program so as to see what percentage of the total time for executing the program (on linux) is spent in these loops. I should be able to specify the loops for which the performance should be measured. I have tried out several tools (vtune, hpctoolkit, oprofile) in the last few days and none of them seem to do this. They all find the performance bottlenecks and just show the time for those. Thats because these tools only store the time taken that is above a threshold (~1ms). So if one loop takes lesser time than that then its execution time won't be reported.

The basic block counting feature of gprof depends on a feature in older compilers thats not supported now.

I could manually write a simple timer using gettimeofday or something like that but for some cases it won't give accurate results. For ex:

for (i = 0; i < 1000; ++i)
{
    for (j  = 0; j < N; ++j)
    {
        //do some work here
    }
}

Now here I want to measure the total time spent in the inner loop and I will have to put a call to gettimeofday inside the first loop. So gettimeofday itself will get called a 1000 times which introduces its own overhead and the result will be inaccurate.

© Stack Overflow or respective owner

Related posts about Performance

Related posts about vtune