Menu

[r3]: / lib / CompPerf.CVS / tcl_expr.perf  Maximize  Restore  History

Download this file

150 lines (124 with data), 3.8 kB

#§
#§  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

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.