Mail Archives: djgpp/2013/07/07/23:15:15
On Sunday, July 7, 2013 1:36:49 PM UTC-7, DJ Delorie wrote:
> > ticks1=clock();
>
> > ticks2=ticks1;
>
> > while((ticks2/CLOCKS_PER_SEC-ticks1/CLOCKS_PER_SEC)<1)
>
> > ticks2=clock();
>
>
>
> What you should do is write a djgpp program that prints clock()'s
>
> value to the screen, and time it from 0 to 9100 clock()s with a
>
> stopwatch.
>
I am not familiar with how clock() is implemented for DJGPP but according to :
http://en.cppreference.com/w/c/chrono/clock
they state:
<quote>
Defined in header <time.h>
clock_t clock();
Returns the approximate processor time used by the process since the beginning of an implementation-defined era related to the program's execution. To convert result value to seconds divide it by CLOCKS_PER_SEC.
Only the difference between two values returned by different calls to clock is meaningful, as the beginning of the clock era does not have to coincide with the start of the program. clock time may advance faster or slower than the wall clock, depending on the execution resources given to the program by the operating system. For example, if the CPU is shared by other processes, clock time may advance slower than wall clock. On the other hand, if the current process is multithreaded and more than one execution core is available, clock time may advance faster than wall clock.
Parameters:
(none)
Return value:
Processor time used by the program so far or (clock_t)(-1) if that information is unavailable.
Notes:
On POSIX-compatible systems, clock_gettime with clock id CLOCK_PROCESS_CPUTIME_ID offers better resolution.
The value returned by clock() may wrap around on some implementations. For example, on a machine with 32-bit clock_t, it wraps after 2147 seconds or 36 minutes.
</quote>
Thanks
>
>
> All your code is doing is incrementing ticks2 (by 5) until it's
>
> CLOCKS_PER_SEC more than ticks1, modulo whatever ticks1 started at.
>
> You could have done this and gotten similar results:
>
>
>
> > ticks1=0
>
> > ticks2=ticks1;
>
> > while((ticks2/CLOCKS_PER_SEC-ticks1/CLOCKS_PER_SEC)<1)
>
> > ticks2 += 5;
>
>
>
> Note that, because of the "* 5", the value you get could be off by as
>
> much as 4 due to the fact that clock() will *always* return a multiple
>
> of 5. However, the increment from one clock() to the next clock() is
>
> not always the *same* multiple of 5.
>
>
>
> Try using "< 100" instead of "< 1" in your code and see what happens.
>
> That will give you an average value, not one test value.
- Raw text -