Re: Performance comparison Q

"Jeff Godfrey" <[email protected]> Mon, 9 May 2005 11:46:23 -0500
Newsgroups gmane.comp.db.metakit
Message-ID <0eed01c554b6$a35e8970$6500a8c0@quantex>
----- Original Message ----- 
From: "Jean-Claude Wippler" <[email protected]>
To: "Metakit list" <[email protected]>
Sent: Monday, May 09, 2005 11:30 AM
Subject: Re: [Metakit] Performance comparison Q


> [email protected] wrote:
> 
>> If you have the data in an array
> 
> No, list (Tcl arrays are hash tables, I am interested in vector access).
> 
>> % time {for {set i 0} {$i < 49999} {incr i} {incr sum [lindex $data  
>> $i]}} 10
>> 198283 microseconds per iteration
> 
> Fascinating.  I dismissed this one and used foreach, which is slower.
> Still under 1% of C.
> 
> -jcw

How about the following:

Jeff

proc sum1 {} {
    set sum 0
    foreach int $::intList {incr sum $int}
}

proc sum2 {} {
    set sum 0
    for {set i 0} {$i < 50000} {incr i} {
        incr sum [lindex $::intList $i]
    }
}

proc sum3 {intList} {
    set sum 0
    foreach int $intList {incr sum $int}
}

proc sum4 {intList} {
    set sum 0
    for {set i 0} {$i < 50000} {incr i} {
        incr sum [lindex $intList $i]
    }
}

catch {console show}

# --- load the initial list with values
set intList [list]
for {set i 0} {$i < 50000} {incr i} {
    lappend intList $i
}

# --- Now, time various methods of summing the data...

puts "sum1 --> [time sum1 25]"
puts "sum2 --> [time sum2 25]"
puts "sum3 --> [time [list sum3 $intList] 25]"
puts "sum4 --> [time [list sum4 $intList] 25]"

Results...

sum1 --> 11164 microseconds per iteration
sum2 --> 36158 microseconds per iteration
sum3 --> 15525 microseconds per iteration
sum4 --> 21157 microseconds per iteration



_____________________________________________
Metakit mailing list  -  [email protected]
http://www.equi4.com/mailman/listinfo/metakit