[Metakit] Performance comparison Q
Jeff Godfrey
jeff_godfrey at pobox.com
Mon May 9 12:46:23 CEST 2005
----- Original Message -----
From: "Jean-Claude Wippler" <jcw at equi4.com>
To: "Metakit list" <metakit at equi4.com>
Sent: Monday, May 09, 2005 11:30 AM
Subject: Re: [Metakit] Performance comparison Q
> jyl at mod3.net 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
More information about the Metakit
mailing list