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(a)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