4 ; A Scheme implementation of the mops.pasm example program,
5 ; for speed comparisons.
7 ; Example command line:
9 ; umb-scheme mops.scheme
11 ; NOTE: 1,000,000 iterations used instead of 100,000,000
12 ; to keep thing from bogging down too much.
14 ; Copyright (C) 2001-2005, The Perl Foundation.
15 ; This program is free software. It is subject to the same
16 ; license as The Parrot Interpreter.
21 (let ((I1 0) (I2 0) (I3 1) ; set I2, 0
22 (N1 0) (N2 0) (N4 0) ; set I3, 1
23 (N5 0) (I4 1000000) ; set I4, 1000000
25 (display "Iterations: ") ; print "Iterations: "
26 (display I4) ; print I4
27 (newline) ; print "\n"
29 (set! I1 2) ; set I1, 2
30 (set! I5 (* I4 I1)) ; mul I5, I4, I1
32 (display "Estimated ops: ") ; print "Estimated ops: "
33 (display I5) ; print I5
34 (newline) ; print "\n"
36 (set! N1 (time)) ; time N1
38 (define (loop n) ; REDO:
39 (if (not (= n 0)) ; sub I4, I4, I3
40 (loop (- n 1)))) ; if I4, REDO
43 (set! N5 (time)) ; time N5
45 (set! N2 (- N5 N1)) ; sub N2, N5, N1
47 (display "Elapsed time: ") ; print "Elapsed time: "
48 (display N2) ; print N2
49 (newline) ; print "\n"
51 (set! N1 I5) ; iton N1, I5
52 (set! N1 (/ N1 N2)) ; div N1, N1, N2
53 (set! N2 1000000.0) ; set N2, 1000000.0
54 (set! N1 (/ N1 N2)) ; div N1, N1, N2
56 (display "M op/s: ") ; print "M op/s: "
57 (display N1) ; print N1
58 (newline) ; print "\n"