;; Test performance of converting random generated numbers of various types ;; back and forth between string notation. ;; Note that this also depends on the performance of some operators like +, ;; random, = and <. ;; Also, this is silly since random generates different numbers every time. ;; Maybe use a loop that increments or something (use numbers) ;; Gauche ;; (use srfi-27) ;; (define most-positive-fixnum (greatest-fixnum)) ;; (define random random-integer) ;; (define assert identity) ;; Racket (random accepts no larger numbers. not sure if this is a fixnum limit) ;; (define most-positive-fixnum 4294967087) ; 64 bits (define-syntax t (syntax-rules () ((_ expr) (let lp ((i 0)) (when (< i 100000) (let* ((num expr) (num2 (string->number (number->string num)))) ;(assert (= num num2)) (lp (+ i 1)))))))) (display "Testing fixnums:\n") (time (t (random most-positive-fixnum))) (display "Testing bignums:\n") (time (t (+ most-positive-fixnum (random most-positive-fixnum)))) (display "Testing fixnum ratnums:\n") (time (t (let ((x (random most-positive-fixnum))) (/ x (+ x 1))))) (display "Testing fixnum compnums:\n") (time (t (make-rectangular (random most-positive-fixnum) (+ (random most-positive-fixnum) 1)))) (display "Testing flonums:\n") (time (t (let ((x (random most-positive-fixnum))) (/ x (+ x 1.0)))))