r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Profiling] Rebol code optimisation and algorithm comparisons.

Ladislav
31-May-2010
[356]
...its strange that they do not also apply...

 - nothing strange, it is a different kind of counter, not the one 
 used to get the system time (that might mean, that it actually is 
 less precise, e.g.)
Maxim
31-May-2010
[357x2]
What I think too...


but if R3 can get precise timing info, it could arguably add this 
precise elapsed period since last *time* check and add it to the 
result when now/precise is called in a script. 

just an idea... thinking out loud.
even in R2, when you look at an event! object, the timing counter 
within is much more precise than now/precise...  which is why I can 
use mouse move events to check time elapsed much more precisely than 
the mediocre 'time event generating, OS timer which /view is using.
Ladislav
31-May-2010
[359]
precise timing

 - that is exactly the opposite meaning than what I am using. Example:


clocks usually display time in seconds, using second as the smallest 
unit. That does not mean, clocks are imprecise, they may actually 
be more precise, than a counter counting every microsecond, e.g., 
but with a 0.1 % error, meaning, that in one day, such a counter 
may be e.g. one and a half minute slow in one day
Maxim
31-May-2010
[360]
well there are different precisions  ;-)


resolution and measure.  what we are measuring here is the resolution. 
 no?
Ladislav
31-May-2010
[361]
yes, exactly
Andreas
31-May-2010
[362]
>> do http://www.fm.tul.cz/~ladislav/rebol/timblk.r

Warning: clock tick too short, the result is the loop body execution 
time!
== 5.53774319066148E-5


R2 2.7.7 on Linux, 64b (even though I guess the warning means the 
result is useless :)
Maxim
31-May-2010
[363]
hence the use of word "timing"  ;-P


adding timing resolution within the "passage of time" resolution 
would be arguably sufficient for me even if it meant we are ~0.1 
ms off, as long as we get a constant increment of milliseconds (or 
better) to use.


right now the time resolution is sooo poor (on windows) its often 
frustrating.
Ladislav
31-May-2010
[364x3]
thanks, Andreas, it does not mean, that the result is useless, actually, 
it just means, that the resolution is finer than Rebol is able to 
measure
nevertheless, it means, that you may well use this value as the clock 
granularity for the profiling purposes, since the actual granularity 
is even better
so, we can say, that the clock resolution in Linux is better than 
55 microseconds
PeterWood
31-May-2010
[367]
Script: "Time-block" (31-May-2010/11:01:46+2:00)

 Warning: clock tick too short, the result is the loop body execution 
 time!
== 2.09338521400778E-6

Rebol 2.7.5 on Mac OS X 10.64 bit
Izkata
31-May-2010
[368]
Script: "Time-block" (31-May-2010/11:01:46+2:00)

Warning: clock tick too short, the result is the loop body execution 
time!
== 3.37364341085271E-5

Rebol 2.7.6 on Ubuntu Hardy 64-bit
Ladislav
1-Jun-2010
[369x2]
Peter - hmm, better resolution, than 2 microseconds, that is quite 
fast machine
but, generally, it looks, that Windows may well be the only operating 
system currently, that still has a detectable resolution time of 
operating system clock
Gabriele
1-Jun-2010
[371x2]
REBOL/Core 2.7.6.4.2 (14-Mar-2008)
>> do http://www.fm.tul.cz/~ladislav/rebol/timblk.r
connecting to: www.fm.tul.cz
Script: "Time-block" (31-May-2010/11:01:46+2:00)

Warning: clock tick too short, the result is the loop body execution 
time!
== 2.48837209302326E-5
this is Linux Mint 7 64bit
PeterWood
1-Jun-2010
[373]
Ladislav - It's a 2.5 year old MacBookPro with a 2.4GHz Core 2 Duo 
- I think there are much faster processors around these days.
Davide
1-Jun-2010
[374]
OpenBSD.i386

REBOL/Core 2.7.7.9.4 (5-Apr-2010)
>> do http://www.fm.tul.cz/~ladislav/rebol/timblk.r
connecting to: www.fm.tul.cz
Script: "Time-block" (1-Jun-2010/13:40:09+2:00)

Warning: clock tick too short, the result is the loop body execution 
time!
== 2.94573643410853E-6
Ladislav
2-Jun-2010
[375]
Well, Peter, that is possible, but it looks, that your processor 
is about ten times faster than the one Gabriele or Andreas use
Rebolek
2-Jun-2010
[376]
Isn't it OS-dependent? BSD&OSX value seems to be about 2E-6, while 
Linux is around 2E-5 .
PeterWood
2-Jun-2010
[377x2]
This entry at Wikipedia seems to suggest that is it OS dependent 
- http://en.wikipedia.org/wiki/System_time#Operating_systems
This is the result of speed.r on my machine under Rebol 2.7.5

Console:   0:00:00.150098 - 3372 KC/S

Processor: 0:00:00.249708 - 3460 RHz (REBOL-Hertz)

Memory:    0:00:00.468639 - 101 MB/S
Disk/File: 0:00:00.37127 - 82 MB/S
Gabriele
2-Jun-2010
[379]
CPU[-Dual core Intel Core2 Duo E8135 (SMP) clocked at 2660.000 Mhz-] 
Kernel[-2.6.28-18-generic x86_64-] Up[-20 min-] Mem[-808.7/3615.9MB-] 
HDD[-640.1GB(9.1% used)-] Procs[-171-] Client[-Shell-] inxi[-1.1.13-]
PeterWood
2-Jun-2010
[380]
So Gabriele's processor is faster than mine.
Ladislav
2-Jun-2010
[381x2]
I tell you what is so surprising about the results:


Since the result is the loop body execution time, it looks, that 
the loop body in Peter's computer works ten times faster. Gabriele, 
Davide, and Peter, could you please post here your result of the 
following expression?:

>> time-block [now/precise] 0,05
== 2.3651123046875E-6


 it looks that your processor works faster, Peter: your result is 
 the loop body execution time, which is about ten times shorter, than 
 the loop body execution time Ga
sorry, disregard the last three lines above, please (wrong edit)
Rebolek
2-Jun-2010
[383x2]
>>  time-block [now/precise] 0,05
== 9.0625E-7
 
OSX, [Core2Duo-:-2Ghz]
>> do http://www.fm.tul.cz/~ladislav/rebol/timblk.r
connecting to: www.fm.tul.cz
Script: "Time-block" (1-Jun-2010/13:40:09+2:00)

Warning: clock tick too short, the result is the loop body execution 
time!
== 1.78988326848249E-6
Ladislav
2-Jun-2010
[385]
yes, your values correspond well to each other, the loop body calls 
now/precise and uses a comparison and IF
PeterWood
2-Jun-2010
[386]
>>  time-block [now/precise] 0,05

== 7.1484375E-7

OSX, [Core2Duo-:-2-:-4GHz]
Maxim
2-Jun-2010
[387]
I wouldn't be surprised if OSX had an order of magnitude better resolution 
in all things related to time and its measurement.
Ladislav
2-Jun-2010
[388]
this does not have anything in common with resolution, this is about 
interpretation speed, Max
Maxim
2-Jun-2010
[389]
and how do you measure the execution?  by accessing some form of 
timing or time information.
Ladislav
2-Jun-2010
[390]
so what?
Maxim
2-Jun-2010
[391]
if OSX has ten times the resolution, it will give you the impression 
that its ten times faster.
Ladislav
2-Jun-2010
[392]
wrong
Maxim
2-Jun-2010
[393]
how so?
Ladislav
2-Jun-2010
[394x6]
Of course, the evaluation time of NOW/TIME may be operating system 
dependent, but it is still interpretation time (of the above expression)
Peter, how about this one?

>> time-block [] 0,05
== 7.80820846557617E-9
Max: "how so?" - I suppose, that you do see, that the TIME-BLOCK 
function is able to measure evaluation time even if it is shorter 
than the system clock resolution?
(the "trick" is pretty simple, everybody knows how to do that, check 
the source)
finding out it is so obvious, I should probably patent the idea, 
shouldn't I?
My system is Windows 7 Business 64-bit, AMD Athlon X2 250 at 3GHz
Rebolek
2-Jun-2010
[400]
>> time-block [] 0.05
== 1.45263671875E-8
Ladislav
2-Jun-2010
[401x2]
Yes, certainly faster
, so, it looks, that the time the system spends in NOW/PRECISE is 
nonnegligible
Maxim
2-Jun-2010
[403]
what does this do in the time-block  while condition?

(3 * tick-time / time)
Ladislav
2-Jun-2010
[404]
adds the relative error possibly caused by clock resolution to the 
figure to make sure we achieve the desired accuracy
Maxim
2-Jun-2010
[405]
I'm curious as to why the resolution is multiplied by 3?