* t/configure/25-options_test.t:
[parrot.git] / examples / mops / mops.scheme
blobe575cd8f7a0e5539833d9a4743983fe5eca22edc
2 ; mops.scheme
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.
18 ; $Id$
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
24       (I5 0))                ;
25 (display "Iterations:    ")  ; print  "Iterations:    "
26 (display I4)                 ; print  I4
27 (newline)                    ; print  "\n"
28                              ;
29 (set! I1 2)                  ; set    I1, 2
30 (set! I5 (* I4 I1))          ; mul    I5, I4, I1
31                              ;
32 (display "Estimated ops: ")  ; print  "Estimated ops: "
33 (display I5)                 ; print  I5
34 (newline)                    ; print  "\n"
35                              ;
36 (set! N1 (time))             ; time N1
37                              ;
38 (define (loop n)             ; REDO:
39   (if (not (= n 0))          ; sub    I4, I4, I3
40     (loop (- n 1))))         ; if     I4, REDO
41 (loop I4)                    ;
42                              ; DONE:
43 (set! N5 (time))             ; time   N5
44                              ;
45 (set! N2 (- N5 N1))          ; sub    N2, N5, N1
46                              ;
47 (display "Elapsed time:  ")  ; print  "Elapsed time:  "
48 (display N2)                 ; print  N2
49 (newline)                    ; print  "\n"
50                              ;
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
55                              ;
56 (display "M op/s:        ")  ; print  "M op/s:        "
57 (display N1)                 ; print  N1
58 (newline)                    ; print  "\n"
59                              ;
60 )                            ; end