tclcompiler Code
Brought to you by:
aotto1968
#§ #§ CompPerf - tcl_expr.perf #§ #§ (C) IPN - Ingenieurbuero fuer Praezisionsnumerik #§ #§ Dipl.-Ing. Andreas Otto #§ Ulmenstrasse 3 #§ D-34289 Zierenberg #§ mailto:aotto@t-online.de #§ #§ Alle Rechte vorbehalten #§ package require PerfLib ## ## ----------------------------------------------------- ## the test-procs ## proc expr-1.1 {} { ## Non-braced expression set a 12 set b 23 set c 4 set d 6 set e 7 expr $a*$b+log($c)-pow($d,$e) } proc expr-1.2 {} { ## Braced expression set a 12 set b 23 set c 4 set d 6 set e 7 expr {$a*$b+log($c)-pow($d,$e)} } proc expr-unbraced {a} { set b 23 set c 4 set d 6 set e 7 expr $a*$b+log($c)-pow($d,$e) expr $a*$b+log($c+1)-pow($d,$e+1) expr $a*$b+log($c+2)-pow($d,$e+2) expr $a*$b+log($c+3)-pow($d,$e+3) expr $a*$b+log($c+4)-pow($d,$e+4) expr $a*$b+log($c+5)-pow($d,$e+5) expr $a*$b+log($c+6)-pow($d,$e+6) expr $a*$b+log($c+7)-pow($d,$e+7) expr $a*$b+log($c+8)-pow($d,$e+8) expr $a*$b+log($c+9)-pow($d,$e+9) expr $a*$b+log($c+10)-pow($d,$e+10) expr $a*$b+log($c+11)-pow($d,$e+11) expr $a*$b+log($c+12)-pow($d,$e+12) expr $a*$b+log($c+13)-pow($d,$e+13) expr $a*$b+log($c+14)-pow($d,$e+14) expr $a*$b+log($c+14)-pow($d,$e+15) } proc expr-braced {a} { set b 23 set c 4 set d 6 set e 7 expr {$a*$b+log($c)-pow($d,$e)} expr {$a*$b+log($c+1)-pow($d,$e+1)} expr {$a*$b+log($c+2)-pow($d,$e+2)} expr {$a*$b+log($c+3)-pow($d,$e+3)} expr {$a*$b+log($c+4)-pow($d,$e+4)} expr {$a*$b+log($c+5)-pow($d,$e+5)} expr {$a*$b+log($c+6)-pow($d,$e+6)} expr {$a*$b+log($c+7)-pow($d,$e+7)} expr {$a*$b+log($c+8)-pow($d,$e+8)} expr {$a*$b+log($c+9)-pow($d,$e+9)} expr {$a*$b+log($c+10)-pow($d,$e+10)} expr {$a*$b+log($c+11)-pow($d,$e+11)} expr {$a*$b+log($c+12)-pow($d,$e+12)} expr {$a*$b+log($c+13)-pow($d,$e+13)} expr {$a*$b+log($c+14)-pow($d,$e+14)} expr {$a*$b+log($c+14)-pow($d,$e+15)} } proc expr-3.1 {a} { expr {$a} } proc expr-3.2 {a} { expr {$a + $a + $a + $a + $a + $a + $a + $a + $a + $a} } proc expr-3.3 {a} { expr {$a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a + $a} } proc expr-incr-incr {value} { incr value } proc expr-incr-expr {value} { expr {$value + 1} } ## ## ----------------------------------------------------- ## make the test's ## set NUM [ ::PerfLib::Num 5000 ] set TOTAL [ time { ::PerfLib::Register expr-1.1 "Non-braced expression" ::PerfLib::Run expr-1.1 [time {expr-1.1} $NUM] ::PerfLib::Register expr-1.2 "Braced expression" ::PerfLib::Run expr-1.2 [time {expr-1.2} $NUM] ::PerfLib::Register expr-unbraced "Expression unbraced" ::PerfLib::Run expr-unbraced [time {expr-unbraced 12} $NUM] ::PerfLib::Register expr-braced "Expression braced" ::PerfLib::Run expr-braced [time {expr-braced 12} $NUM] ::PerfLib::Register expr-3.1 "Expr small" ::PerfLib::Run expr-3.1 [time {expr-3.1 1} $NUM] ::PerfLib::Register expr-3.2 "Expr midsize" ::PerfLib::Run expr-3.2 [time {expr-3.2 1} $NUM] ::PerfLib::Register expr-3.3 "Expr large" ::PerfLib::Run expr-3.3 [time {expr-3.3 1} $NUM] ::PerfLib::Register expr-incr-incr "Expr incr" ::PerfLib::Run expr-incr-incr [time {expr-incr-incr 1} $NUM] ::PerfLib::Register expr-incr-expr "Expr + 1" ::PerfLib::Run expr-incr-expr [time {expr-incr-expr 1} $NUM] } 1 ] ## ## ----------------------------------------------------- ## cleanup ## ::PerfLib::Exit