summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2022-05-27 03:50:08 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2022-05-27 03:50:08 (GMT)
commit7b9852676d7eb98fcc7823aaa4c5fe0a49812d2b (patch)
treefd9b761a386951cbb05302a7a8ff72985c467519
parent016ec0a646faef2fc968cdf8287302beaa0f70dc (diff)
downloadtcl-7b9852676d7eb98fcc7823aaa4c5fe0a49812d2b.zip
tcl-7b9852676d7eb98fcc7823aaa4c5fe0a49812d2b.tar.gz
tcl-7b9852676d7eb98fcc7823aaa4c5fe0a49812d2b.tar.bz2
Rearrange output order to make comparisons easier.
-rw-r--r--tests-perf/listPerf.tcl179
1 files changed, 104 insertions, 75 deletions
diff --git a/tests-perf/listPerf.tcl b/tests-perf/listPerf.tcl
index 1252870..b8dcd49 100644
--- a/tests-perf/listPerf.tcl
+++ b/tests-perf/listPerf.tcl
@@ -249,93 +249,122 @@ namespace eval perf::list {
print_separator linsert
- comment == Insert into empty lists
- comment Insert one element into empty list
- measure [linsert_describe empty 0 "0 (const)" 1 1] {linsert {} 0 ""}
-
ListPerf create perf -overhead {set L {}} -time 1000
# Note: Const indices take different path through bytecode than variable
# indices hence separate cases below
- foreach len $Lengths {
- if {$len >= 10000} {
- set reps 100
- } else {
- set reps [expr {100000/$len}]
- }
- perf option -reps $reps
- foreach idx [list 0 1 [expr {$len/2}] end-1 end] {
-
- # Const index
- comment Insert once to shared list with const index
- perf measure [linsert_describe shared $len "$idx (const)" 1 1] \
- "linsert \$L $idx x" [list len $len] -overhead {}
-
- comment Insert multiple times to shared list with const index
- perf measure [linsert_describe shared $len "$idx (const)" 1 $reps] \
- "set L \[linsert \$L $idx X\]" [list len $len]
-
- # Variable index
- comment Insert once to shared list with variable index
- perf measure [linsert_describe shared $len "$idx (var)" 1 1] \
- {linsert $L $idx x} [list len $len idx $idx] -overhead {}
-
- comment Insert multiple times to shared list with variable index
- perf measure [linsert_describe shared $len "$idx (var)" 1 $reps] {
- set L [linsert $L $idx X]
- } [list len $len idx $idx]
- }
- # Multiple items at a time
- # Not in loop above because of desired output ordering
- foreach idx [list 0 1 [expr {$len/2}] end-1 end] {
- comment Insert multiple items multiple times to shared list with const index
- perf measure [linsert_describe shared $len "$idx (const)" 5 $reps] \
- "set L \[linsert \$L $idx X X X X X\]" [list len $len]
- comment Insert multiple items multiple times to shared list with variable index
- perf measure [linsert_describe shared $len "$idx (var)" 5 $reps] {
- set L [linsert $L $idx X X X X X]
- } [list len $len idx $idx]
+ # Var case
+ foreach share_mode {shared unshared} {
+ set idx 0
+ if {$share_mode eq "shared"} {
+ comment == Insert into empty lists
+ comment Insert one element into empty list
+ measure [linsert_describe shared 0 "0 (var)" 1 1] {linsert $L $idx ""} -setup {set idx 0; set L {}}
+ } else {
+ comment == Insert into empty lists
+ comment Insert one element into empty list
+ measure [linsert_describe unshared 0 "0 (var)" 1 1] {linsert {} $idx ""} -setup {set idx 0}
+ }
+ foreach idx_str [list 0 1 mid end-1 end] {
+ foreach len $Lengths {
+ if {$len >= 10000} {
+ set reps 100
+ } else {
+ set reps [expr {100000/$len}]
+ }
+ if {$idx_str eq "mid"} {
+ set idx [expr {$len/2}]
+ } else {
+ set idx $idx_str
+ }
+ # perf option -reps $reps
+ set reps 100
+ if {$share_mode eq "shared"} {
+ comment Insert once to shared list with variable index
+ perf measure [linsert_describe shared $len "$idx (var)" 1 1] \
+ {linsert $L $idx x} [list len $len idx $idx] -overhead {} -reps 10000
+
+ comment Insert multiple times to shared list with variable index
+ perf measure [linsert_describe shared $len "$idx (var)" 1 $reps] {
+ set L [linsert $L $idx X]
+ } [list len $len idx $idx] -reps $reps
+
+ comment Insert multiple items multiple times to shared list with variable index
+ perf measure [linsert_describe shared $len "$idx (var)" 5 $reps] {
+ set L [linsert $L $idx X X X X X]
+ } [list len $len idx $idx] -reps $reps
+ } else {
+ # NOTE : the Insert once case is left out for unshared lists
+ # because it requires re-init on every iteration resulting
+ # in a lot of measurement noise
+ comment Insert multiple times to unshared list with variable index
+ perf measure [linsert_describe unshared $len "$idx (var)" 1 $reps] {
+ set L [linsert $L[set L {}] $idx X]
+ } [list len $len idx $idx] -reps $reps
+ comment Insert multiple items multiple times to unshared list with variable index
+ perf measure [linsert_describe unshared $len "$idx (var)" 5 $reps] {
+ set L [linsert $L[set L {}] $idx X X X X X]
+ } [list len $len idx $idx] -reps $reps
+ }
+ }
}
-
}
- # Not in loop above because of how we want order in output
-
- foreach len $Lengths {
- if {$len > 100000} {
- set reps 10
+ # Const index
+ foreach share_mode {shared unshared} {
+ if {$share_mode eq "shared"} {
+ comment == Insert into empty lists
+ comment Insert one element into empty list
+ measure [linsert_describe shared 0 "0 (const)" 1 1] {linsert $L 0 ""} -setup {set L {}}
} else {
- set reps [expr {100000/$len}]
+ comment == Insert into empty lists
+ comment Insert one element into empty list
+ measure [linsert_describe unshared 0 "0 (const)" 1 1] {linsert {} 0 ""}
}
- perf option -reps $reps
- foreach idx [list 0 1 [expr {$len/2}] end-1 end] {
- # NOTE : the Insert once case is left out for unshared lists
- # because it requires re-init on every iteration resulting
- # in a lot of measurement noise
-
- # Const index
- comment Insert multiple times to unshared list with const index
- perf measure [linsert_describe unshared $len "$idx (const)" 1 $reps] \
- "set L \[linsert \$L\[set L {}\] $idx X]" [list len $len]
-
- comment Insert multiple items multiple times to unshared list with const index
- perf measure [linsert_describe unshared $len "$idx (const)" 5 $reps] \
- "set L \[linsert \$L\[set L {}\] $idx X X X X X]" [list len $len]
-
- # Variable index
-
- comment Insert multiple times to unshared list with variable index
- perf measure [linsert_describe unshared $len "$idx (var)" 1 $reps] {
- set L [linsert $L[set L {}] $idx X]
- } [list len $len idx $idx]
+ foreach idx_str [list 0 1 mid end end-1] {
+ foreach len $Lengths {
+ if {$len >= 10000} {
+ set reps 100
+ } else {
+ set reps [expr {100000/$len}]
+ }
+ # Note end, end-1 explicitly calculated as otherwise they
+ # are not treated as const
+ if {$idx_str eq "mid"} {
+ set idx [expr {$len/2}]
+ } elseif {$idx_str eq "end"} {
+ set idx [expr {$len-1}]
+ } elseif {$idx_str eq "end-1"} {
+ set idx [expr {$len-2}]
+ } else {
+ set idx $idx_str
+ }
+ #perf option -reps $reps
+ set reps 100
+ if {$share_mode eq "shared"} {
+ comment Insert once to shared list with const index
+ perf measure [linsert_describe shared $len "$idx (const)" 1 1] \
+ "linsert \$L $idx x" [list len $len] -overhead {} -reps 10000
- comment Insert multiple items multiple times to unshared list with variable index
- perf measure [linsert_describe unshared $len "$idx (var)" 5 $reps] {
- set L [linsert $L[set L {}] $idx X X X X X]
- } [list len $len idx $idx]
+ comment Insert multiple times to shared list with const index
+ perf measure [linsert_describe shared $len "$idx (const)" 1 $reps] \
+ "set L \[linsert \$L $idx X\]" [list len $len] -reps $reps
+
+ comment Insert multiple items multiple times to shared list with const index
+ perf measure [linsert_describe shared $len "$idx (const)" 5 $reps] \
+ "set L \[linsert \$L $idx X X X X X\]" [list len $len] -reps $reps
+ } else {
+ comment Insert multiple times to unshared list with const index
+ perf measure [linsert_describe unshared $len "$idx (const)" 1 $reps] \
+ "set L \[linsert \$L\[set L {}\] $idx X]" [list len $len] -reps $reps
+ comment Insert multiple items multiple times to unshared list with const index
+ perf measure [linsert_describe unshared $len "$idx (const)" 5 $reps] \
+ "set L \[linsert \$L\[set L {}\] $idx X X X X X]" [list len $len] -reps $reps
+ }
+ }
}
}
@@ -350,7 +379,7 @@ namespace eval perf::list {
}
proc lappend_perf {} {
variable Lengths
-
+
print_separator lappend
ListPerf create perf -setup {set L [lrepeat [expr {$len/4}] x]}