Menu

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

Download this file

127 lines (95 with data), 2.8 kB

#§
#§  CompPerf - tcl_eval.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 e-cmd {val} {
    set cmd [list set val $val]
    eval $cmd
}

proc e-list val {
    eval [list set val $val]
}

proc e-str val {
    eval set val [list $val]
}

proc eval-std {l1} {
    eval list $l1
}

proc eval-list {l1} {
    eval [list list] $l1
}

proc uplevel-std {l1} {
    uplevel 1 list $l1
}

proc uplevel-list {l1} {
    uplevel 1 [list list] $l1
}

proc makeLists {{size 1000}} {
    global Sobj Lobj LSobj
    set Sobj ""
    set Lobj [list]
    set LSobj [list]
    for {set i 0} {$i < $size} {incr i} {
        append Sobj "$i "
        lappend Lobj $i
        lappend LSobj $i
    }
    string length $LSobj
}

proc makeListOfLists {{size 1000}} {
    set LLobj [list]
    for {set i 0} {$i<$size} {incr i} {
    lappend LLobj [list $i $i]
    }
    return $LLobj
}

##
## -----------------------------------------------------
## make the test's
##

set NUM     [ ::PerfLib::Num 1000 ]
set NUM2    [ expr { $NUM / 2 } ]

set TOTAL   [ time {

    ::PerfLib::Register makeLists "make Lists"
    ::PerfLib::Run      makeLists [time {makeLists} $NUM2]

    ::PerfLib::Register makeListOfLists "make List Of Lists"
    ::PerfLib::Run      makeListOfLists [time {makeListOfLists} $NUM2]

    ::PerfLib::Register e-cmd "EVAL cmd eval in list obj var"
    ::PerfLib::Run      e-cmd [time {e-cmd val} $NUM]

    ::PerfLib::Register e-list "EVAL cmd eval as list"
    ::PerfLib::Run      e-list [time {e-list val} $NUM]

    ::PerfLib::Register e-str "EVAL cmd eval as string"
    ::PerfLib::Run      e-str [time {e-str val} $NUM]

    makeLists

    ::PerfLib::Register eval-std "EVAL cmd and mixed lists"
    ::PerfLib::Run      eval-std [time {eval-std $Sobj} $NUM]

    ::PerfLib::Register eval-list "EVAL list cmd and mixed lists"
    ::PerfLib::Run      eval-list [time {eval-list $LSobj} $NUM]

    ::PerfLib::Register eval-listb "EVAL list cmd and pure lists"
    ::PerfLib::Run      eval-listb [time {eval-list $Lobj} $NUM]

    makeLists

    ::PerfLib::Register uplevel-std "UPLEVEL cmd and mixed lists"
    ::PerfLib::Run      uplevel-std [time {uplevel-std $Sobj} $NUM]

    ::PerfLib::Register uplevel-list "UPLEVEL list cmd and mixed lists"
    ::PerfLib::Run      uplevel-list [time {uplevel-list $LSobj} $NUM]

    ::PerfLib::Register uplevel-listb "UPLEVEL list cmd and pure lists"
    ::PerfLib::Run      uplevel-listb [time {uplevel-list $Lobj} $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.