OT: recommended way of timing two pieces of code in C

jd1008 jd1008 at gmail.com
Fri Feb 26 19:22:02 UTC 2016



On 02/26/2016 11:28 AM, jd1008 wrote:
>
>
> On 02/26/2016 11:06 AM, Ranjan Maitra wrote:
>> On Fri, 26 Feb 2016 12:44:10 -0500 Tom Horsley 
>> <horsley1953 at gmail.com> wrote:
>>
>>> On Fri, 26 Feb 2016 09:51:24 -0600
>>> Ranjan Maitra wrote:
>>>
>>>> How does this happen? The number of operations are exactly the same 
>>>> (or should be).
>>> The number of operations in your program are the same, but
>>> your program is running on the same machine as the linux
>>> OS which has deamons running in the background, and may
>>> even be stopping to page in code your program needs, or grow
>>> pages as it allocates memory. Vast numbers of things
>>> affect timing. Even the stupid dynamic library load address
>>> randomization linux does can result in totally different
>>> cache hits in memory. The list goes on and on...
>>>
>>> Apart from linux, most motherboards these days have SMI
>>> interrupts happening behind everyone's back which leave
>>> missing chunks of time no one can account for.
>> Thank you! So, is there any way that these other processes can be 
>> separated out in the time calculations? I can not come up with 
>> definitive statements unless I can do these comparisons in a fair 
>> manner.
>>
>> Best wishes.
>> Ranjan
>>
>> __
> Hi Ranjan,
> you have to use virtual timers instead of hard clock timers.
>
> Usually since you just want process time, then you start the itimer
> at the very start of the process, and give it some very long time to
> expire (say as long as max time). The just before call to exit, query 
> the itimer
> structure values and print them out.
> Cheers,
>
> JD
Please read/ usr/include/linux/time.h and  /usr/include/sys/time.h
and look for ITIMER_VIRTUAL and which structure member must be set to 
ITIMER_VIRTUAL.

Cheers,

JD


More information about the users mailing list