From f8526e38701c333ff1eaedb4254523c15fb65291 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Wed, 6 Jul 2011 18:08:37 -0400 Subject: [PATCH] Add an extra test for partial bounds checking elimination. original commit: 2e6b518c952d1994bde10086de403a7e48d8a094 --- .../optimizer/tests/vector-sum.rkt | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 collects/tests/typed-scheme/optimizer/tests/vector-sum.rkt diff --git a/collects/tests/typed-scheme/optimizer/tests/vector-sum.rkt b/collects/tests/typed-scheme/optimizer/tests/vector-sum.rkt new file mode 100644 index 00000000..e9313004 --- /dev/null +++ b/collects/tests/typed-scheme/optimizer/tests/vector-sum.rkt @@ -0,0 +1,54 @@ +#; +( +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 39:0 #%module-begin -- dead else branch +TR opt: vector-sum.rkt 49:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- binary fixnum +TR opt: vector-sum.rkt 49:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch +TR opt: vector-sum.rkt 49:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch +TR opt: vector-sum.rkt 49:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- fixnum bounded expr +TR opt: vector-sum.rkt 51:2 (displayln (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch +TR opt: vector-sum.rkt 51:2 (displayln (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch +TR opt: vector-sum.rkt 51:2 (displayln (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch +TR opt: vector-sum.rkt 52:3 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- binary fixnum +TR opt: vector-sum.rkt 52:3 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- fixnum bounded expr +TR opt: vector-sum.rkt 50:4 (vector-set! v i (sin (exact->inexact i))) -- vector access splitting +TR opt: vector-sum.rkt 50:22 sin -- unary float +TR opt: vector-sum.rkt 50:27 exact->inexact -- fixnum to float +TR opt: vector-sum.rkt 52:16 sum -- dead else branch +TR opt: vector-sum.rkt 52:16 sum -- dead else branch +TR opt: vector-sum.rkt 54:6 + -- binary float +TR opt: vector-sum.rkt 54:12 (vector-ref v i) -- vector access splitting +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +1.53534361535036 +) + +#lang typed/racket + +;; micro-benchmark to measure the effectiveness of partial bounds checking +;; elimination + +(define: l : Index 10000000) + +(define: v : (Vectorof Float) (make-vector l 0.0)) + +(for ([i (in-range 10)]) + (for: ([i : Nonnegative-Fixnum (in-range l)]) + (vector-set! v i (sin (exact->inexact i)))) + (displayln + (for/fold: ([sum : Float 0.0]) + ([i : Nonnegative-Fixnum (in-range l)]) + (+ sum (vector-ref v i)))))