It was too late... Thanks a lot for your examples of measureing.
I will try it a little bit more. --daishi

At Thu, 06 Oct 2005 01:29:08 -0500,
Alex Shinn wrote:
> You have to be careful what you're measuring.  Inside the loop you
> repeatedly call expt, which is slower not only because it makes many
> more checks than before, such as checking the types and signs of the
> arguments, but because it checks the fixnum case last.
> 
> If you bind the result once outside the loop you'll see the time using
> fx+ (and also fx> to be sure we're comparing the same thing) is indeed
> exactly the same:
> 
> $ csi -eval '(let ((2^17 (expt 2 17)))(gc)(time (let loop ([i 0]) (or (fx> i 
> 2^17) (loop (fx+ i 1))))))'
>    0.313 seconds elapsed
>        0 seconds in (major) GC
>       31 mutations
>     1285 minor GCs
>        0 major GCs
> 
> $ csi -R numbers -eval '(let ((2^17 (expt 2 17)))(gc)(time (let loop ([i 0]) 
> (or (fx> i 2^17) (loop (fx+ i 1))))))'
>    0.313 seconds elapsed
>        0 seconds in (major) GC
>       31 mutations
>     1285 minor GCs
>        0 major GCs
> 
> Now let's compare the time of the generic numbers + and normal +:
> 
> $ csi -eval '(let ((2^17 (expt 2 17)))(gc)(time (let loop ([i 0]) (or (> i 
> 2^17) (loop (+ i 1))))))'
>    0.325 seconds elapsed
>        0 seconds in (major) GC
>       31 mutations
>     1289 minor GCs
>        0 major GCs
> 
> $ csi -R numbers -eval '(let ((2^17 (expt 2 17)))(gc)(time (let loop ([i 0]) 
> (or (> i 2^17) (loop (+ i 1))))))'
>    0.454 seconds elapsed
>    0.002 seconds in (major) GC
>       31 mutations
>       58 minor GCs
>        1 major GCs
> 
> 0.454 vs 0.325, or about 1.4x slower when using the full number tower.
> 
> -- 
> Alex


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to