[Jeffrey Hobbs]: There have been discussions about the changing relative speed of Tcl over the years (primarily rotating around the addition of the byte-code compiler - faster, but then also the changes to support i18n - slower). I created the tclbench [http://tcllib.sf.net/] application to get a better understanding of what has truly happened to performance over the years, with the forward looking view of finding the pain points and fixing them. Anyone can get tclbench from CVS [http://tcllib.cvs.sourceforge.net/tcllib/] to do relative benchmarks themselves, but below I've posted the results from a full run over the benchmark suite. All builds represent the final code of that version. A few have noted that these numbers aren't the easiest to read overall, which I can agree with. Take a look at the [Tcl Normalized Benchmarks] that set 8.4 as a norm of 1.0 to compare against. For those looking for more complete version-by-version comparisons, see [Tcl Extended Benchmarks]. If you've got BLT handy, then here is a little code for [Plotting Tcl Benchmarks]. The speed enhancements in 8.4 are primarily achieved by work done by myself and Eric Melski at Ajuba and continued at [ActiveState]. Addition optimizations are also done by [Miguel Sofer]. For those interested in the use of threads for concurrent processing, please see the [Tcl Benchmarks with Threads]. The ''numbers are microseconds'', but you should only look at them relative to each other. ''Lower is better.'' There is some fluctuation expected as Tcl's 'time' does wall timing, not true cpu time. In any case, these were done on a P4 1.9ghz with 1GB physmem running SuSE 9.2. All interpreters were compiled static with no threads using gcc 3.3.4 (pre 3.3.5 20040809). ---- TCL_INTERP: 1:8.5a6 2:8.4.14 3:8.3.5 4:8.2.3 5:8.0.5 6:7.6p2 STARTED 2006-11-13 12:10:34 (runbench.tcl v1.18) Benchmark 1:8.5a6 /home/jeffh/install/linux-ix86/bin/tclsh8.5 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:13 elapsed 130715 milliseconds Benchmark 2:8.4.14 /home/jeffh/install/linux-ix86/bin/tclsh8.4 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:09 elapsed 125821 milliseconds Benchmark 3:8.3.5 /home/jeffh/install/linux-ix86/bin/tclsh8.3 abbccdeeeffghkllmmmmnpprrssstuvw 00:03:30 elapsed 207764 milliseconds Benchmark 4:8.2.3 /home/jeffh/install/linux-ix86/bin/tclsh8.2 abbccdeeeffghkllmmmmnpprrssstuvw 00:03:47 elapsed 224311 milliseconds Benchmark 5:8.0.5 /home/jeffh/install/lx-ix86/bin/tclsh8.0 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:52 elapsed 161795 milliseconds Benchmark 6:7.6p2 /home/jeffh/install/linux-ix86/bin/tclsh7.6 abbccdeeeffghkllmmmmnpprrssstuvw 00:07:56 elapsed 463680 milliseconds 000 VERSIONS: 1:8.5a6 2:8.4.14 3:8.3.5 4:8.2.3 5:8.0.5 6:7.6p2 001 ARRAY genKeys 50 275.20 186.40 218.00 253.00 221.00 327.00 002 ARRAY genKeys 500 2441.56 1513.94 1994.00 2254.00 1957.00 3006.00 003 ARRAY makeHash 500 50 58656.32 59350.38 63528.00 78344.00 69591.00 88216.00 004 BASE64 decode 10 147.51 124.14 151.00 154.00 135.00 -=- 005 BASE64 decode 100 1214.67 958.95 1246.00 1354.00 1128.00 -=- 006 BASE64 decode 1000 11771.00 9122.80 11733.00 12818.00 11240.00 -=- 007 BASE64 decode 10000 119987.7 90339.60 118334.0 131150.0 114323.0 -=- 008 BASE64 decode2 10 145.83 123.28 146.00 154.00 131.00 -=- 009 BASE64 decode2 100 1180.25 952.40 1204.00 1284.00 1102.00 -=- 010 BASE64 decode2 1000 11431.80 8879.85 11313.00 12504.00 10842.00 -=- 011 BASE64 decode2 10000 114503.7 88848.00 113733.0 127944.0 109045.0 -=- 012 BASE64 decode3 10 65.27 57.27 94.00 111.00 72.00 -=- 013 BASE64 decode3 100 464.52 398.82 735.00 868.00 569.00 -=- 014 BASE64 decode3 1000 4376.95 3654.65 6857.00 8252.00 5552.00 -=- 015 BASE64 decode3 10000 43076.50 36501.40 68889.00 83750.00 54943.00 -=- 016 BASE64 encode 10 74.89 80.49 115.00 126.00 126.00 -=- 017 BASE64 encode 100 590.30 508.77 854.00 1013.00 1088.00 -=- 018 BASE64 encode 1000 5437.00 4868.80 8403.00 9944.00 10830.00 -=- 019 BASE64 encode 10000 56128.80 47985.90 86460.00 99833.00 108751.0 -=- 020 BASE64 encode2 10 63.17 63.49 103.00 114.00 105.00 -=- 021 BASE64 encode2 100 472.60 484.02 845.00 1011.00 979.00 -=- 022 BASE64 encode2 1000 4417.35 4663.80 8064.00 9877.00 9428.00 -=- 023 BASE64 encode2 10000 43005.80 45548.30 79764.00 100117.0 99915.00 -=- 024 BASE64 encode3 10 46.70 45.51 59.00 67.00 45.00 -=- 025 BASE64 encode3 100 236.75 234.47 390.00 470.00 312.00 -=- 026 BASE64 encode3 1000 2063.70 2059.35 3544.00 4452.00 2873.00 -=- 027 BASE64 encode3 10000 20351.40 20416.40 35902.00 44382.00 29485.00 -=- 028 BIN bitset-v1 1000 chars 4319.36 4110.15 4847.00 4835.00 3851.00 -=- 029 BIN bitset-v1 5000 chars 20411.31 19194.33 22870.00 25422.00 19403.00 -=- 030 BIN bitset-v1 10000 chars 40878.88 38338.30 45396.00 48977.00 39394.00 -=- 031 BIN bitset-v2 1000 chars 2521.48 2444.21 2884.00 2632.00 2212.00 -=- 032 BIN bitset-v2 5000 chars 12050.11 11332.84 14599.00 13648.00 11150.00 -=- 033 BIN bitset-v2 10000 chars 23863.28 22449.33 29719.00 26869.00 22459.00 -=- 034 BIN bitset-v3 1000 chars 812.52 821.92 1651.00 1602.00 1377.00 -=- 035 BIN bitset-v3 5000 chars 3673.91 3659.47 8505.00 8260.00 7143.00 -=- 036 BIN bitset-v3 10000 chars 7418.57 7415.32 17309.00 16782.00 14576.00 -=- 037 BIN c scan, 1000b 286.87 268.43 115.00 160.00 89.00 -=- 038 BIN c scan, 5000b 976.04 1314.16 569.00 798.00 454.00 -=- 039 BIN c scan, 10000b 1859.44 1615.38 1390.00 1833.00 1151.00 -=- 040 BIN chars, 10000b 7557.04 7508.03 19352.00 19251.00 15025.00 -=- 041 BIN u char, 10000b 2336.05 -=- -=- -=- -=- -=- 042 CATCH error, complex 19.83 9.40 8.00 8.00 7.00 8.00 043 CATCH no catch used 4.88 3.39 2.00 2.00 3.00 4.00 044 CATCH return error 19.39 8.65 8.00 8.00 6.00 9.00 045 CATCH return except 5.04 3.36 3.00 3.00 2.00 5.00 046 CATCH return ok 6.55 4.72 3.00 3.00 3.00 6.00 047 DATA access in a list 285.26 256.58 691.00 669.00 577.00 14348.00 048 DATA access in an array 597.15 425.96 741.00 703.00 592.00 1909.00 049 DATA create in a list 231.65 221.03 897.00 776.00 675.00 1761.00 050 DATA create in an array 862.69 700.36 938.00 957.00 1246.00 2282.00 051 ENC iso2022-jp, gets 216.10 8528.50 2923.00 2836.00 -=- -=- 052 ENC iso2022-jp, read 188.27 8464.60 2924.00 2765.00 -=- -=- 053 ENC iso2022-jp, read & size 180.53 8514.77 3176.00 2777.00 -=- -=- 054 ENC iso8859-2, gets 187.53 277.40 174.00 163.00 -=- -=- 055 ENC iso8859-2, read 146.73 240.20 136.00 123.00 -=- -=- 056 ENC iso8859-2, read & size 163.67 247.47 140.00 135.00 -=- -=- 057 EVAL cmd and mixed lists 693.74 685.30 516.00 1491.00 1013.00 187.00 058 EVAL cmd eval as list 3.16 3.04 3.00 7.00 6.00 5.00 059 EVAL cmd eval as string 8.13 7.89 7.00 6.00 6.00 4.00 060 EVAL cmd eval in list obj var 4.47 3.71 3.00 7.00 7.00 5.00 061 EVAL list cmd and mixed lists 681.40 689.06 545.00 1497.00 1016.00 197.00 062 EVAL list cmd and pure lists 32.75 48.30 34.00 1494.00 1018.00 196.00 063 EXPR $a != $b int 2.52 2.44 2.00 2.00 2.00 10.00 064 EXPR $a != $b str (!= len) 5.01 5.09 5.00 5.00 4.00 17.00 065 EXPR $a != $b str (== len) 4.93 6.00 5.00 5.00 5.00 18.00 066 EXPR $a == $b int 2.25 2.75 2.00 2.00 2.00 10.00 067 EXPR $a == $b str (!= len) 5.02 4.91 5.00 5.00 5.00 17.00 068 EXPR $a == $b str (== len) 6.51 7.11 6.00 5.00 6.00 19.00 069 EXPR braced 6.75 4.54 4.00 5.00 4.00 22.00 070 EXPR fifty operands 7.56 7.96 8.00 8.00 8.00 31.00 071 EXPR incr with expr 1.68 1.64 1.00 1.00 1.00 3.00 072 EXPR incr with incr 1.68 1.63 1.00 1.00 1.00 3.00 073 EXPR inline 6.66 6.62 5.00 5.00 4.00 11.00 074 EXPR one operand 1.64 1.75 1.00 1.00 1.00 3.00 075 EXPR ten operands 2.68 2.81 2.00 2.00 2.00 8.00 076 EXPR unbraced 44.77 35.62 28.00 28.00 22.00 21.00 077 FCOPY binary: 160K 2653.09 2691.46 2694.00 2672.00 -=- -=- 078 FCOPY encoding: 160K 6920.30 7086.92 2688.00 2686.00 -=- -=- 079 FCOPY std: 160K 2662.22 2703.91 2685.00 2672.00 2769.00 2656.00 080 FILE exec interp 7390.33 6448.53 6077.00 5167.00 5703.00 3043.00 081 FILE exec interp: pkg require 23541.27 17112.30 13885.00 12171.00 7892.00 4363.00 082 FILE exists tmpfile (obj) 4.00 4.15 4.00 4.00 3.00 3.00 083 FILE exists ~ 3.21 3.52 82.00 92.00 3.00 6.00 084 FILE exists! tmpfile (obj) 3.64 3.77 4.00 4.00 3.00 3.00 085 FILE exists! tmpfile (str) 7.77 21.71 5.00 4.00 3.00 3.00 086 FILE glob tmpdir (60 entries) 137.33 158.88 128.00 159.00 117.00 97.00 087 FILE glob / all subcommands 6888.86 6456.01 6310.00 6246.00 5286.00 4809.00 088 FILE glob / atime 1021.58 1173.98 428.00 533.00 380.00 449.00 089 FILE glob / attributes 2299.91 2026.40 1366.00 1430.00 1087.00 -=- 090 FILE glob / dirname 210.54 639.71 297.00 395.00 311.00 350.00 091 FILE glob / executable 1006.82 1158.62 416.00 527.00 368.00 408.00 092 FILE glob / exists 996.04 1149.31 412.00 513.00 365.00 411.00 093 FILE glob / extension 234.66 348.60 204.00 303.00 234.00 263.00 094 FILE glob / isdirectory 1021.00 1158.00 421.00 530.00 379.00 421.00 095 FILE glob / isfile 1008.24 1162.03 426.00 527.00 384.00 419.00 096 FILE glob / mtime 1000.64 1160.54 428.00 536.00 379.00 452.00 097 FILE glob / owned 1036.91 1180.50 438.00 556.00 407.00 433.00 098 FILE glob / readable 998.39 1166.32 405.00 516.00 364.00 413.00 099 FILE glob / rootname 258.60 349.29 214.00 303.00 232.00 276.00 100 FILE glob / size 1009.34 1168.41 429.00 541.00 385.00 451.00 101 FILE glob / tail 206.23 499.93 263.00 366.00 280.00 304.00 102 FILE glob / writable 1008.92 1167.51 412.00 518.00 367.00 409.00 103 FILE recurse / -dir 4990.52 5691.38 4041.00 4065.00 4225.00 3991.00 104 FILE recurse / cd 5520.92 8896.72 3800.00 3779.00 3943.00 3580.00 105 GCCont_cpb::cGCC 50 94.78 79.83 193.00 221.00 161.00 -=- 106 GCCont_cpb::cGCC 500 520.06 396.90 1249.00 1525.00 1118.00 -=- 107 GCCont_cpb::cGCC 5000 4602.98 3507.72 11812.00 14587.00 10708.00 -=- 108 GCCont_cpbre1::cGCC 50 111.66 118.33 119.00 -=- -=- -=- 109 GCCont_cpbre1::cGCC 500 730.11 797.90 766.00 -=- -=- -=- 110 GCCont_cpbre1::cGCC 5000 6618.56 7471.64 7130.00 -=- -=- -=- 111 GCCont_cpbre2::cGCC 50 90.17 96.15 97.00 -=- -=- -=- 112 GCCont_cpbre2::cGCC 500 639.05 705.00 695.00 -=- -=- -=- 113 GCCont_cpbre2::cGCC 5000 6082.66 6813.98 6609.00 -=- -=- -=- 114 GCCont_cpbrs2::cGCC 50 34.80 34.26 105.00 102.00 -=- -=- 115 GCCont_cpbrs2::cGCC 500 138.74 133.20 779.00 763.00 -=- -=- 116 GCCont_cpbrs2::cGCC 5000 1109.42 1105.80 7410.00 7344.00 -=- -=- 117 GCCont_cpbrs::cGCC1 50 60.21 70.15 182.00 157.00 93.00 -=- 118 GCCont_cpbrs::cGCC1 500 166.79 176.55 926.00 895.00 230.00 -=- 119 GCCont_cpbrs::cGCC1 5000 1189.02 1197.76 8153.00 8125.00 1368.00 -=- 120 GCCont_cpbrs::cGCC2 50 55.17 62.19 189.00 168.00 95.00 -=- 121 GCCont_cpbrs::cGCC2 500 153.87 163.45 990.00 943.00 210.00 -=- 122 GCCont_cpbrs::cGCC2 5000 1080.56 1117.26 8655.00 8435.00 1213.00 -=- 123 GCCont_cpbrs_trap::cGCC 50 103.50 109.06 118.00 114.00 68.00 -=- 124 GCCont_cpbrs_trap::cGCC 500 699.82 761.69 765.00 760.00 391.00 -=- 125 GCCont_cpbrs_trap::cGCC 5000 6547.18 7297.56 7184.00 7188.00 3580.00 -=- 126 GCCont_expr::cGCC 50 75.89 83.71 78.00 82.00 -=- -=- 127 GCCont_expr::cGCC 500 537.35 1020.23 1003.00 1001.00 -=- -=- 128 GCCont_expr::cGCC 5000 7282.06 63436.54 63629.00 68051.00 -=- -=- 129 GCCont_i::cGCC1 50 163.08 143.75 149.00 176.00 129.00 -=- 130 GCCont_i::cGCC1 500 1478.25 1272.88 1329.00 1564.00 1230.00 -=- 131 GCCont_i::cGCC1 5000 14768.78 12517.72 13254.00 16141.00 12364.00 -=- 132 GCCont_i::cGCC2 50 64.66 54.16 78.00 99.00 68.00 -=- 133 GCCont_i::cGCC2 500 500.73 386.22 604.00 773.00 644.00 -=- 134 GCCont_i::cGCC2 5000 4749.16 3626.80 5969.00 7745.00 6391.00 -=- 135 GCCont_i::cGCC3 50 52.92 44.06 74.00 90.00 64.00 -=- 136 GCCont_i::cGCC3 500 372.46 313.11 568.00 725.00 595.00 -=- 137 GCCont_i::cGCC3 5000 3531.28 2892.10 5498.00 7447.00 5846.00 -=- 138 GCCont_r1::cGCC 50 174.24 169.20 201.00 235.00 164.00 -=- 139 GCCont_r1::cGCC 500 1682.83 1639.17 1957.00 2068.00 1585.00 -=- 140 GCCont_r1::cGCC 5000 16749.82 15801.90 19426.00 20146.00 15942.00 -=- 141 GCCont_r2::cGCC 50 163.28 160.29 159.00 181.00 132.00 -=- 142 GCCont_r2::cGCC 500 1493.01 1451.88 1417.00 1694.00 1265.00 -=- 143 GCCont_r2::cGCC 5000 14836.16 14333.74 13918.00 16961.00 12874.00 -=- 144 GCCont_r3::cGCC 50 162.20 157.36 159.00 191.00 134.00 -=- 145 GCCont_r3::cGCC 500 1499.91 1447.73 1409.00 1732.00 1288.00 -=- 146 GCCont_r3::cGCC 5000 14753.34 14159.38 13896.00 17491.00 12960.00 -=- 147 GCCont_rsf1::cGCC 50 67.46 58.62 77.00 103.00 -=- -=- 148 GCCont_rsf1::cGCC 500 439.21 372.25 489.00 764.00 -=- -=- 149 GCCont_rsf1::cGCC 5000 4040.46 3430.98 4672.00 7520.00 -=- -=- 150 GCCont_rsf2::cGCC1 50 44.80 39.56 52.00 67.00 -=- -=- 151 GCCont_rsf2::cGCC1 500 230.99 197.22 299.00 423.00 -=- -=- 152 GCCont_rsf2::cGCC1 5000 1993.84 1735.28 2727.00 3969.00 -=- -=- 153 GCCont_rsf2::cGCC2 50 38.11 34.30 41.00 51.00 -=- -=- 154 GCCont_rsf2::cGCC2 500 214.04 183.00 268.00 399.00 -=- -=- 155 GCCont_rsf2::cGCC2 5000 1923.34 1665.72 2484.00 3716.00 -=- -=- 156 GCCont_rsf3::cGCC 50 38.87 35.35 40.00 50.00 -=- -=- 157 GCCont_rsf3::cGCC 500 213.02 186.18 269.00 391.00 -=- -=- 158 GCCont_rsf3::cGCC 5000 1917.92 1647.82 2471.00 3724.00 -=- -=- 159 GCCont_turing::cGCC 50 30.82 30.21 43.00 40.00 -=- -=- 160 GCCont_turing::cGCC 500 129.64 132.57 235.00 230.00 -=- -=- 161 GCCont_turing::cGCC 5000 1100.96 1114.74 2208.00 2181.00 -=- -=- 162 HEAPSORT size 10 133.65 102.00 133.00 156.00 1474.00 841.00 163 HEAPSORT size 50 1169.52 864.56 1064.00 1319.00 8630.00 6758.00 164 HEAPSORT size 100 2826.27 2147.39 2581.00 3174.00 18175.00 16159.00 165 HEAPSORT2 size 10 120.82 92.73 -=- -=- -=- -=- 166 HEAPSORT2 size 50 1027.24 776.65 -=- -=- -=- -=- 167 HEAPSORT2 size 100 2423.73 1838.73 -=- -=- -=- -=- 168 IF 1/0 check 1.74 1.80 2.00 2.00 2.00 7.00 169 IF else true al 4.37 5.38 5.00 5.00 4.00 16.00 170 IF else true numeric 2.75 3.57 3.00 3.00 2.00 15.00 171 IF elseif true al 4.32 5.08 5.00 5.00 4.00 15.00 172 IF elseif true numeric 3.65 2.66 4.00 4.00 4.00 14.00 173 IF if false al/al 3.22 4.07 3.00 3.00 3.00 11.00 174 IF if false al/num 3.28 3.10 3.00 3.00 2.00 18.00 175 IF if false num/num 2.50 2.23 2.00 2.00 2.00 14.00 176 IF if true al 2.95 3.08 3.00 3.00 3.00 11.00 177 IF if true al/al 3.16 3.12 4.00 3.00 3.00 11.00 178 IF if true num/num 2.55 2.33 2.00 2.00 2.00 13.00 179 IF if true numeric 2.49 2.19 2.00 2.00 2.00 11.00 180 IF multi 1st true 2.30 2.24 2.00 2.00 2.00 17.00 181 IF multi 2nd true 2.60 2.49 3.00 3.00 2.00 20.00 182 IF multi 9th true 4.23 4.80 6.00 5.00 5.00 36.00 183 IF multi default true 4.56 4.12 6.00 5.00 5.00 36.00 184 KLIST shuffle0 llength 1 13.93 13.31 21.00 21.00 18.00 8.0+ 185 KLIST shuffle0 llength 10 45.86 43.23 83.00 81.00 68.00 8.0+ 186 KLIST shuffle0 llength 100 372.99 336.10 639.00 610.00 509.00 8.0+ 187 KLIST shuffle0 llength 1000 4189.63 3760.24 7008.00 6627.00 5707.00 8.0+ 188 KLIST shuffle0 llength 10000 99120.70 93373.60 120730.0 118393.0 98541.00 -=- 189 KLIST shuffle1-s llength 1 15.42 12.18 12.00 12.00 10.00 50.00 190 KLIST shuffle1-s llength 10 72.86 57.68 62.00 63.00 58.00 318.00 191 KLIST shuffle1-s llength 100 1225.42 1001.84 1089.00 992.00 835.00 5833.00 192 KLIST shuffle1-s llength 1000 64476.50 62536.28 63917.00 43591.00 44769.00 341190.0 193 KLIST shuffle1a llength 1 15.38 15.05 14.00 14.00 12.00 47.00 194 KLIST shuffle1a llength 10 90.63 73.29 75.00 79.00 72.00 414.00 195 KLIST shuffle1a llength 100 887.31 687.58 711.00 747.00 678.00 7460.00 196 KLIST shuffle1a llength 1000 8856.13 6829.12 7248.00 7519.00 6786.00 421107.0 197 KLIST shuffle1a llength 10000 92515.60 72747.10 74480.00 78896.00 74178.00 -=- 198 KLIST shuffle2 llength 1 13.94 12.40 17.00 16.00 19.00 54.00 199 KLIST shuffle2 llength 10 88.63 59.86 84.00 78.00 102.00 320.00 200 KLIST shuffle2 llength 100 860.50 589.65 810.00 721.00 947.00 3061.00 201 KLIST shuffle2 llength 1000 9102.68 6560.56 8392.00 7725.00 10365.00 31020.00 202 KLIST shuffle2 llength 10000 112247.4 87270.70 100785.0 93906.00 120629.0 -=- 203 KLIST shuffle3 llength 1 12.39 12.17 13.00 14.00 12.00 36.00 204 KLIST shuffle3 llength 10 69.20 51.09 66.00 65.00 63.00 297.00 205 KLIST shuffle3 llength 100 634.11 488.19 592.00 608.00 550.00 3719.00 206 KLIST shuffle3 llength 1000 6695.03 5276.01 6247.00 6539.00 6002.00 128649.0 207 KLIST shuffle3 llength 10000 111306.3 94897.70 107573.0 111186.0 109541.0 -=- 208 KLIST shuffle4 llength 1 13.59 11.96 14.00 15.00 13.00 39.00 209 KLIST shuffle4 llength 10 70.77 54.44 80.00 70.00 69.00 321.00 210 KLIST shuffle4 llength 100 664.32 515.22 654.00 665.00 590.00 5065.00 211 KLIST shuffle4 llength 1000 6608.25 5160.25 6394.00 6534.00 5978.00 240319.0 212 KLIST shuffle4 llength 10000 70696.90 55650.20 69254.00 69515.00 63418.00 -=- 213 KLIST shuffle5-s llength 1 7.32 5.41 6.00 6.00 5.00 24.00 214 KLIST shuffle5-s llength 10 50.62 36.62 38.00 35.00 31.00 176.00 215 KLIST shuffle5-s llength 100 639.74 575.88 576.00 437.00 397.00 2189.00 216 KLIST shuffle5-s llength 1000 19822.14 21953.03 21729.00 14017.00 14611.00 74852.00 217 KLIST shuffle5a llength 1 8.54 6.65 7.00 7.00 6.00 28.00 218 KLIST shuffle5a llength 10 62.06 44.39 45.00 41.00 38.00 217.00 219 KLIST shuffle5a llength 100 593.54 432.13 414.00 389.00 362.00 2712.00 220 KLIST shuffle5a llength 1000 6318.28 4728.18 4495.00 4238.00 3997.00 99709.00 221 KLIST shuffle5a llength 10000 105327.5 88788.20 89345.00 87254.00 84982.00 -=- 222 KLIST shuffle6 llength 1 2.47 2.01 -=- -=- -=- -=- 223 KLIST shuffle6 llength 10 32.86 21.42 -=- -=- -=- -=- 224 KLIST shuffle6 llength 100 333.84 212.83 -=- -=- -=- -=- 225 KLIST shuffle6 llength 1000 3376.19 2084.46 -=- -=- -=- -=- 226 KLIST shuffle6 llength 10000 38704.80 25867.90 -=- -=- -=- -=- 227 LIST append to list 2.40 2.43 4.00 4.00 4.00 4.00 228 LIST concat APPEND 2x10 13.03 15.70 14.00 15.00 13.00 7.00 229 LIST concat APPEND 2x100 96.84 101.14 101.00 113.00 85.00 27.00 230 LIST concat APPEND 2x1000 869.28 863.95 870.00 1023.00 735.00 193.00 231 LIST concat APPEND 2x10000 9585.51 9812.22 9661.00 10860.00 8316.00 1872.00 232 LIST concat CONCAT 2x10 5.16 4.96 5.00 13.00 8.00 8.00 233 LIST concat CONCAT 2x100 7.38 6.85 6.00 103.00 73.00 34.00 234 LIST concat CONCAT 2x1000 29.48 35.63 37.00 915.00 652.00 247.00 235 LIST concat CONCAT 2x10000 418.85 382.08 418.00 10075.00 7630.00 2532.00 236 LIST concat EVAL/LAPPEND 2x10 7.75 8.71 9.00 16.00 12.00 11.00 237 LIST concat EVAL/LAPPEND 2x100 11.45 13.36 15.00 42.00 37.00 53.00 238 LIST concat EVAL/LAPPEND 2x1000 44.27 53.80 42.00 277.00 283.00 429.00 239 LIST concat EVAL/LAPPEND 2x10000 546.97 779.54 663.00 4293.00 3049.00 4269.00 240 LIST concat FOREACH/LAPPEND 2x10 14.16 11.10 24.00 17.00 13.00 19.00 241 LIST concat FOREACH/LAPPEND 2x100 38.20 34.41 127.00 131.00 109.00 147.00 242 LIST concat FOREACH/LAPPEND 2x1000 316.92 329.71 1214.00 1247.00 970.00 1272.00 243 LIST concat FOREACH/LAPPEND 2x10000 3324.62 3347.89 12697.00 13278.00 9682.00 12622.00 244 LIST concat SET 2x10 11.14 12.54 11.00 13.00 9.00 7.00 245 LIST concat SET 2x100 84.89 87.22 84.00 100.00 75.00 28.00 246 LIST concat SET 2x1000 806.86 778.52 805.00 908.00 648.00 204.00 247 LIST concat SET 2x10000 8781.16 8807.27 8830.00 10139.00 7616.00 2125.00 248 LIST exact search, first item 3.37 2.96 2.00 2.00 2.00 155.00 249 LIST exact search, last item 16.79 12.96 13.00 13.00 12.00 161.00 250 LIST exact search, middle item 7.37 4.77 4.00 4.00 3.00 157.00 251 LIST exact search, non-item 44.49 36.65 36.00 39.00 35.00 164.00 252 LIST exact search, typed item 15.19 8.12 12.00 12.00 12.00 161.00 253 LIST exact search, untyped item 16.86 13.11 13.00 12.00 12.00 160.00 254 LIST index first element 2.87 2.37 2.00 2.00 2.00 48.00 255 LIST index last element 2.41 2.21 2.00 2.00 2.00 61.00 256 LIST index middle element 2.43 2.25 2.00 2.00 2.00 55.00 257 LIST insert an item at "end" 17.65 17.65 17.00 16.00 16.00 146.00 258 LIST insert an item at middle 17.14 18.73 18.00 18.00 17.00 83.00 259 LIST insert an item at start 17.54 18.73 18.00 18.00 18.00 73.00 260 LIST iterate list 653.28 625.94 1389.00 1498.00 1154.00 138881.0 261 LIST join list 284.75 247.16 252.00 244.00 188.00 482.00 262 LIST large, early range 5.75 6.00 5.00 5.00 4.00 62.00 263 LIST large, late range 5.35 5.87 5.00 5.00 4.00 65.00 264 LIST length, pure list 2.25 2.28 2.00 2.00 2.00 195.00 265 LIST list 5.92 6.05 7.00 7.00 6.00 20.00 266 LIST lset foreach l 752.01 668.52 =8.4 =8.4 =8.4 =8.4 267 LIST lset foreach list 744.06 664.97 =8.4 =8.4 =8.4 =8.4 268 LIST lset foreach ""s l 150.96 141.37 =8.4 =8.4 =8.4 =8.4 269 LIST lset foreach ""s list 150.57 141.75 =8.4 =8.4 =8.4 =8.4 270 LIST regexp search, first item 5.74 5.60 5.00 5.00 2.00 158.00 271 LIST regexp search, last item 319.87 329.89 329.00 325.00 70.00 230.00 272 LIST regexp search, non-item 671.99 688.38 697.00 690.00 112.00 270.00 273 LIST remove first element 17.17 19.07 18.00 18.00 17.00 64.00 274 LIST remove in mixed list 21.11 23.37 22.00 404.00 22.00 81.00 275 LIST remove last element 16.64 18.41 18.00 18.00 17.00 87.00 276 LIST remove middle element 16.91 19.21 18.00 18.00 17.00 81.00 277 LIST replace first el with multiple 17.09 19.17 18.00 19.00 18.00 77.00 278 LIST replace first element 16.78 17.16 17.00 17.00 16.00 74.00 279 LIST replace in mixed list 21.26 21.98 20.00 400.00 19.00 82.00 280 LIST replace last el with multiple 17.15 18.38 17.00 17.00 17.00 149.00 281 LIST replace last element 16.52 17.09 16.00 17.00 16.00 149.00 282 LIST replace middle el with multiple 17.09 18.48 18.00 18.00 17.00 117.00 283 LIST replace middle element 16.77 17.12 17.00 17.00 16.00 115.00 284 LIST replace range 6.37 24.46 17.00 18.00 17.00 108.00 285 LIST small, early range 3.37 3.34 3.00 3.00 2.00 52.00 286 LIST small, late range 3.42 3.39 3.00 3.00 2.00 62.00 287 LIST sort 485.56 432.19 489.00 433.00 398.00 569.00 288 LIST sorted search, first item 3.80 3.28 2.00 2.00 2.00 154.00 289 LIST sorted search, last item 3.26 3.24 13.00 14.00 12.00 161.00 290 LIST sorted search, middle item 3.34 3.28 4.00 4.00 3.00 156.00 291 LIST sorted search, non-item 3.12 3.15 36.00 36.00 35.00 165.00 292 LIST sorted search, typed item 3.83 3.15 12.00 12.00 12.00 161.00 293 LIST typed sort 499.26 363.58 384.00 851.00 289.00 1815.00 294 LOOP for (to 1000) 276.74 280.11 481.00 506.00 488.00 3281.00 295 LOOP for, iterate list 562.00 503.06 956.00 913.00 917.00 53426.00 296 LOOP for, iterate string 747.32 716.32 1345.00 1336.00 1132.00 10928.00 297 LOOP foreach, iterate list 273.39 227.14 403.00 401.00 353.00 1202.00 298 LOOP foreach, iterate string 343.12 281.39 425.00 798.00 672.00 1201.00 299 LOOP while (to 1000) 280.24 295.59 482.00 506.00 508.00 3210.00 300 LOOP while 1 (to 1000) 224.34 225.62 492.00 525.00 456.00 3344.00 301 MAP ([chars])-case regsub 50.68 53.92 59.00 56.00 11.00 18.00 302 MAP http mapReply 12231.34 20918.00 49894.00 50669.00 46045.00 7759.00 303 MAP regsub -nocase, no match 280.82 264.93 557.00 564.00 320.00 413.00 304 MAP regsub 1 val 212.14 210.12 866.00 860.00 176.00 321.00 305 MAP regsub 1 val -nocase 320.73 310.76 862.00 865.00 232.00 390.00 306 MAP regsub 2 val 583.43 579.56 4005.00 3989.00 436.00 740.00 307 MAP regsub 2 val -nocase 768.46 737.64 4056.00 3968.00 570.00 869.00 308 MAP regsub 3 val 827.40 822.24 5454.00 5420.00 601.00 980.00 309 MAP regsub 3 val -nocase 1081.48 1044.18 5559.00 5432.00 818.00 1175.00 310 MAP regsub 4 val 1058.59 1112.99 6855.00 6926.00 749.00 1213.00 311 MAP regsub 4 val -nocase 1371.12 1431.43 6968.00 7520.00 983.00 1464.00 312 MAP regsub short 9.30 8.56 35.00 34.00 8.00 17.00 313 MAP regsub, no match 78.39 81.68 738.00 563.00 199.00 274.00 314 MAP string -nocase, no match 434.40 668.91 4543.00 4608.00 nomap nomap 315 MAP string 1 val 199.74 205.66 1340.00 1381.00 nomap nomap 316 MAP string 1 val -nocase 301.80 305.30 2542.00 2621.00 nomap nomap 317 MAP string 2 val 399.50 422.91 1406.00 1369.00 nomap nomap 318 MAP string 2 val -nocase 597.02 634.34 3656.00 3706.00 nomap nomap 319 MAP string 3 val 452.70 447.78 1694.00 1661.00 nomap nomap 320 MAP string 3 val -nocase 692.44 1106.14 4649.00 4715.00 nomap nomap 321 MAP string 4 val 564.09 590.10 1824.00 1765.00 nomap nomap 322 MAP string 4 val -nocase 963.69 1143.86 5117.00 5168.00 nomap nomap 323 MAP string short 7.01 7.95 7.00 9.00 nomap nomap 324 MAP string, no match 186.11 283.66 1860.00 1812.00 nomap nomap 325 MAP |-case regsub 28.81 29.76 30.00 28.00 9.00 13.00 326 MAP |-case strmap 6.98 6.18 8.00 9.00 nomap nomap 327 MATRIX mult 5x5 193.22 144.62 256.00 304.00 219.00 1056.00 328 MATRIX mult 10x10 1337.70 959.34 1614.00 1939.00 1396.00 8125.00 329 MATRIX mult 15x15 4378.46 3079.41 5166.00 6185.00 4460.00 28829.00 330 MATRIX transposition-0 1722.39 1262.14 3581.00 3631.00 2929.00 8313.00 331 MATRIX transposition-1 995.54 947.98 2466.00 2385.00 2134.00 37451.00 332 MD5 msg len 10 484.63 395.84 397.00 376.00 -=- -=- 333 MD5 msg len 100 835.25 665.23 692.00 632.00 -=- -=- 334 MD5 msg len 1000 5612.65 4525.50 4378.00 4162.00 -=- -=- 335 MD5 msg len 10000 53574.10 42950.40 41627.00 39514.00 -=- -=- 336 MTHD array stored proc call 2.31 2.47 2.00 2.00 2.00 -=- 337 MTHD call absolute 5.22 4.42 5.00 5.00 4.00 -=- 338 MTHD call relative 6.65 5.43 6.00 5.00 4.00 -=- 339 MTHD direct ns proc call 1.70 2.12 2.00 1.00 1.00 -=- 340 MTHD imported ns proc call 2.02 1.73 1.00 1.00 2.00 -=- 341 MTHD indirect proc eval 5.10 6.40 4.00 9.00 7.00 -=- 342 MTHD indirect proc eval #2 9.39 7.75 6.00 8.00 7.00 -=- 343 MTHD inline call 0.84 0.77 1.00 1.00 1.00 -=- 344 MTHD interp alias proc call 2.22 2.05 3.00 3.00 2.00 -=- 345 MTHD ns lookup call 14.87 12.84 16.00 21.00 16.00 -=- 346 MTHD switch method call 6.83 7.08 6.00 11.00 9.00 -=- 347 NS alternating 468.41 376.52 317.00 350.00 209.00 -=- 348 PARSE html form upload (7978) 2911.65 2669.70 3249.00 4197.00 3233.00 -=- 349 PARSE html form upload (993570) 336846.2 317232.0 385600.0 494134.0 407029.0 -=- 350 PROC do-nothing, no args 1.39 1.40 1.00 3.00 1.00 1.00 351 PROC do-nothing, one arg 1.51 1.53 1.00 1.00 1.00 1.00 352 PROC empty, no args 0.39 0.42 1.00 3.00 1.00 1.00 353 PROC empty, use args 0.38 0.44 1.00 1.00 1.00 2.00 354 PROC explicit return 1.66 1.60 1.00 1.00 1.00 2.00 355 PROC explicit return (2) 1.49 1.56 1.00 1.00 1.00 2.00 356 PROC explicit return (3) 1.57 1.57 2.00 1.00 1.00 2.00 357 PROC heavily commented 1.49 1.52 1.00 1.00 1.00 45.00 358 PROC implicit return 2.72 1.97 1.00 1.00 1.00 3.00 359 PROC implicit return (2) 1.71 1.78 1.00 1.00 2.00 2.00 360 PROC implicit return (3) 1.51 1.86 1.00 1.00 1.00 1.00 361 PROC local links with global 131.06 122.93 147.00 144.00 130.00 673.00 362 PROC local links with upvar 113.31 106.81 126.00 126.00 117.00 647.00 363 PROC local links with variable 108.78 102.03 125.00 131.00 76.00 635.00 364 RE 1-char long-end 16.68 22.55 14.00 14.00 213.00 229.00 365 RE 1-char long-end catching 26.10 32.49 30.00 30.00 221.00 240.00 366 RE 1-char long-middle 11.01 11.64 9.00 9.00 108.00 123.00 367 RE 1-char long-middle catching 20.51 20.86 25.00 25.00 116.00 135.00 368 RE 1-char long-start 5.37 4.69 4.00 4.00 3.00 21.00 369 RE 1-char long-start catching 14.57 13.66 20.00 20.00 11.00 30.00 370 RE 1-char short 5.47 4.68 4.00 4.00 3.00 4.00 371 RE 1-char short catching 14.89 13.48 19.00 19.00 11.00 11.00 372 RE basic 4.84 4.20 4.00 4.00 3.00 5.00 373 RE basic catching 15.89 15.01 21.00 22.00 10.00 12.00 374 RE c-comment long 20.39 22.95 18.00 20.00 18.00 43.00 375 RE c-comment long catching 58.65 62.63 65.00 71.00 31.00 78.00 376 RE c-comment long nomatch 29.64 35.29 26.00 26.00 4.00 31.00 377 RE c-comment long nomatch catching 30.06 35.62 26.00 27.00 5.00 33.00 378 RE c-comment long pmatch 33.17 38.60 29.00 32.00 139.00 203.00 379 RE c-comment long pmatch catching 33.49 39.46 29.00 33.00 141.00 215.00 380 RE c-comment many *s 33.25 40.26 30.00 31.00 31.00 84.00 381 RE c-comment many *s catching 95.11 101.80 101.00 102.00 51.00 144.00 382 RE c-comment nomatch 7.06 6.69 6.00 6.00 2.00 4.00 383 RE c-comment nomatch catching 7.66 7.14 6.00 7.00 3.00 7.00 384 RE c-comment simple 11.50 10.98 10.00 10.00 6.00 8.00 385 RE c-comment simple catching 44.06 46.19 51.00 51.00 13.00 17.00 386 RE count all matches 29.40 30.98 31.00 77.00 73.00 158.00 387 RE extract all matches 35.04 35.08 34.00 106.00 85.00 205.00 388 RE literal regexp 7.92 8.46 8.00 8.00 5.00 5.00 389 RE n-char long-end 17.07 18.98 15.00 14.00 228.00 243.00 390 RE n-char long-end catching 29.25 31.24 33.00 33.00 236.00 254.00 391 RE n-char long-middle 11.02 11.87 10.00 9.00 115.00 131.00 392 RE n-char long-middle catching 23.47 24.55 27.00 29.00 124.00 142.00 393 RE n-char long-start 5.48 4.77 4.00 4.00 3.00 18.00 394 RE n-char long-start catching 17.56 16.60 22.00 24.00 11.00 29.00 395 RE n-char short 5.49 4.87 4.00 4.00 3.00 4.00 396 RE n-char short catching 16.53 16.14 21.00 21.00 10.00 12.00 397 RE static anchored match 1.63 1.60 5.00 5.00 2.00 3.00 398 RE static anchored nomatch 1.89 1.62 2.00 2.00 2.00 3.00 399 RE static l-anchored match 1.69 1.69 4.00 3.00 2.00 3.00 400 RE static l-anchored nomatch 1.60 1.65 2.00 2.00 2.00 3.00 401 RE static long match 4.89 6.38 10.00 10.00 8.00 21.00 402 RE static long nomatch 6.15 10.03 15.00 15.00 8.00 21.00 403 RE static r-anchored match 1.96 1.88 4.00 4.00 2.00 3.00 404 RE static r-anchored nomatch 1.97 1.87 3.00 3.00 2.00 3.00 405 RE static short match 1.83 1.82 4.00 4.00 2.00 3.00 406 RE static short nomatch 1.85 1.80 3.00 3.00 2.00 2.00 407 RE var-based regexp 8.90 8.15 7.00 7.00 5.00 8.00 408 READ 595K, gets 40076.53 36544.00 76731.00 70503.00 28609.00 54202.00 409 READ 595K, read 9069.60 9226.43 20626.00 20421.00 157439.0 165524.0 410 READ 595K, read & size 8842.30 8901.40 20459.00 20471.00 5952.00 165459.0 411 READ 3050b, gets 201.70 213.27 412.00 367.00 166.00 307.00 412 READ 3050b, read 60.50 62.00 105.00 98.00 39.00 80.00 413 READ 3050b, read & size 67.37 73.23 110.00 106.00 43.00 84.00 414 READ bin 595K, gets 39958.23 41143.80 68362.00 64590.00 29255.00 54319.00 415 READ bin 595K, read 6221.80 6281.67 6294.00 6314.00 157477.0 165458.0 416 READ bin 595K, read & size 6315.23 6264.10 6287.00 6314.00 5971.00 165374.0 417 READ bin 3050b, gets 223.67 273.23 380.00 357.00 173.00 317.00 418 READ bin 3050b, read 43.20 41.10 44.00 45.00 44.00 79.00 419 READ bin 3050b, read & size 51.70 50.27 51.00 52.00 49.00 82.00 420 SHA (A) msg len 10 731.27 669.34 848.00 809.00 -=- -=- 421 SHA (A) msg len 100 1322.75 1240.78 1543.00 1474.00 -=- -=- 422 SHA (A) msg len 1000 9412.60 8851.05 11338.00 10750.00 -=- -=- 423 SHA (A) msg len 10000 90920.40 84581.00 108393.0 103710.0 -=- -=- 424 SHA (B) msg len 10 -=- 613.09 801.00 759.00 -=- -=- 425 SHA (B) msg len 100 -=- 1126.40 1460.00 1372.00 -=- -=- 426 SHA (B) msg len 1000 -=- 7767.55 10575.00 10132.00 -=- -=- 427 SHA (B) msg len 10000 -=- 73405.70 101366.0 97963.00 -=- -=- 428 SPLIT iter, 4000 uchars 1665.45 1430.88 1853.00 3358.00 2815.00 4787.00 429 SPLIT iter, 4010 chars 1622.63 1405.70 1992.00 3301.00 2811.00 4716.00 430 SPLIT iter, rand 100 c 92.54 89.47 116.00 92.00 70.00 -=- 431 SPLIT iter, rand 1000 c 581.88 572.78 701.00 1005.00 692.00 -=- 432 SPLIT iter, rand 10000 c 4400.57 3926.00 5158.00 9416.00 7508.00 -=- 433 SPLIT on 'c', 4000 uchars 79.55 72.42 194.00 204.00 93.00 382.00 434 SPLIT on 'c', 4010 chars 76.53 72.44 176.00 192.00 97.00 362.00 435 SPLIT on 'cz', 4000 uchars 214.62 211.90 331.00 356.00 181.00 514.00 436 SPLIT on 'cz', 4010 chars 196.98 194.59 304.00 329.00 181.00 492.00 437 SPLIT on 'cû', 4000 uchars 247.25 248.00 343.00 367.00 180.00 513.00 438 SPLIT on 'cû', 4010 chars 170.79 167.64 228.00 249.00 110.00 378.00 439 SPLIT, 4000 uchars 537.97 501.77 454.00 1642.00 1294.00 391.00 440 SPLIT, 4010 chars 478.13 448.17 448.00 1596.00 1295.00 372.00 441 SPLIT, rand 100 c 62.96 81.19 79.00 37.00 29.00 -=- 442 SPLIT, rand 1000 c 335.82 323.23 297.00 388.00 310.00 -=- 443 SPLIT, rand 10000 c 1606.03 1542.30 1342.00 4297.00 3569.00 -=- 444 STR append 16.91 13.27 16.00 15.00 18.00 97.00 445 STR append (1KB + 1KB) 7.72 6.20 10.00 9.00 7.00 59.00 446 STR append (1MB + (1b + 1K + 1b) * 100) 4109.77 4096.23 7547.00 7535.00 7383.00 36563.00 447 STR append (1MB + 1KB * 20) 3673.51 3645.60 7132.00 7111.00 7002.00 35298.00 448 STR append (1MB + 1KB * 1000) 7357.52 7191.54 11683.00 11656.00 11332.00 49574.00 449 STR append (1MB + 1KB) 3596.75 3579.89 7063.00 7054.00 6940.00 35022.00 450 STR append (1MB + 1MB * 3) 13446.26 13328.16 17005.00 17000.00 16824.00 97646.00 451 STR append (1MB + 1MB * 5) 16635.10 16542.60 32697.00 32731.00 32323.00 128244.0 452 STR append (1MB + 2b * 1000) 4085.26 4039.43 8437.00 8302.00 8075.00 35230.00 453 STR append (10KB + 1KB) 14.64 10.28 14.00 13.00 10.00 237.00 454 STR first (failure) 15.58 15.29 12.00 12.00 12.00 70.00 455 STR first (failure) utf 15.02 15.51 57.00 56.00 12.00 70.00 456 STR first (success) 3.52 3.00 3.00 3.00 2.00 52.00 457 STR first (success) utf 3.14 3.05 3.00 3.00 2.00 52.00 458 STR first (total failure) 12.30 11.68 4.00 4.00 4.00 66.00 459 STR first (total failure) utf 12.59 12.01 5.00 4.00 4.00 65.00 460 STR index 0 3.33 2.81 3.00 3.00 2.00 64.00 461 STR index 100 3.21 2.76 3.00 3.00 2.00 59.00 462 STR index 500 3.24 2.79 3.00 3.00 2.00 62.00 463 STR info locals match 136.91 138.92 142.00 142.00 121.00 525.00 464 STR last (failure) 25.70 25.24 25.00 25.00 25.00 66.00 465 STR last (success) 3.97 3.21 66.00 69.00 2.00 70.00 466 STR last (total failure) 18.11 17.45 17.00 17.00 17.00 61.00 467 STR length (==4010) 2.25 2.36 2.00 2.00 2.00 57.00 468 STR length growing (1000) 398.92 396.42 1090.00 1102.00 951.00 2616.00 469 STR length growing uc (1000) 426.11 423.08 1105.00 1074.00 937.00 2668.00 470 STR length of a LIST 2.19 2.11 2.00 2.00 1.00 64.00 471 STR length static str 1.58 1.96 2.00 2.00 2.00 5.00 472 STR match, complex (failure 2) 30347.66 29129.01 283905.0 284625.0 129639.0 129699.0 473 STR match, complex (failure) 20.83 20.11 165.00 164.00 76.00 125.00 474 STR match, complex (success early) 4.41 2.75 4.00 4.00 2.00 51.00 475 STR match, complex (success late) 28.35 35.62 172.00 170.00 78.00 127.00 476 STR match, complex (total failure) 15.77 14.06 160.00 161.00 74.00 123.00 477 STR match, exact (failure) 1.62 1.70 2.00 1.00 1.00 2.00 478 STR match, exact (success) 1.54 1.66 2.00 2.00 2.00 2.00 479 STR match, exact -nocase (failure) 1.83 1.75 2.00 2.00 2.00 4.00 480 STR match, exact -nocase (success) 2.65 2.81 2.00 2.00 2.00 4.00 481 STR match, simple (failure) 1.71 1.85 2.00 2.00 1.00 3.00 482 STR match, simple (success) 1.78 1.81 2.00 2.00 1.00 3.00 483 STR range, index 100..200 of 4010 5.26 3.91 3.00 3.00 2.00 64.00 484 STR repeat, 4010 chars * 10 34.85 33.51 33.00 50.00 56.00 610.00 485 STR repeat, 4010 chars * 100 1229.85 1211.55 1217.00 2526.00 2690.00 12018.00 486 STR repeat, abcdefghij * 10 3.50 3.54 3.00 4.00 13.00 46.00 487 STR repeat, abcdefghij * 100 9.85 9.79 9.00 17.00 113.00 370.00 488 STR repeat, abcdefghij * 1000 93.23 106.62 72.00 123.00 1101.00 3649.00 489 STR replace, equal replacement 15.82 12.92 84.00 82.00 12.00 136.00 490 STR replace, longer replacement 14.77 13.17 85.00 80.00 13.00 138.00 491 STR replace, no replacement 12.34 11.06 84.00 84.00 12.00 140.00 492 STR reverse iter/append, 10 c 13.84 11.98 23.00 29.00 18.00 49.00 493 STR reverse iter/append, 10 uc 16.20 12.90 23.00 29.00 18.00 49.00 494 STR reverse iter/append, 100 c 102.04 82.31 194.00 250.00 153.00 476.00 495 STR reverse iter/append, 100 uc 109.25 91.10 196.00 251.00 153.00 474.00 496 STR reverse iter/append, 400 c 393.65 311.79 765.00 992.00 594.00 2910.00 497 STR reverse iter/append, 400 uc 416.98 344.38 768.00 992.00 597.00 2860.00 498 STR reverse iter/set, 10 c 16.61 13.93 20.00 23.00 15.00 51.00 499 STR reverse iter/set, 10 uc 16.49 14.39 19.00 24.00 16.00 50.00 500 STR reverse iter/set, 100 c 144.62 128.94 186.00 223.00 142.00 532.00 501 STR reverse iter/set, 100 uc 153.97 133.91 192.00 223.00 143.00 531.00 502 STR reverse iter/set, 400 c 669.01 604.46 828.00 975.00 651.00 3630.00 503 STR reverse iter/set, 400 uc 689.30 622.01 840.00 1048.00 653.00 3628.00 504 STR reverse recursive, 10 c 46.68 40.80 44.00 45.00 33.00 90.00 505 STR reverse recursive, 10 uc 45.86 39.02 44.00 45.00 33.00 90.00 506 STR reverse recursive, 100 c 483.46 441.16 488.00 450.00 407.00 1050.00 507 STR reverse recursive, 100 uc 481.60 445.87 656.00 606.00 407.00 1045.00 508 STR reverse recursive, 400 c 2991.37 2862.29 2698.00 2604.00 2637.00 8.0+ 509 STR reverse recursive, 400 uc 3020.61 3043.41 5839.00 5789.00 2641.00 8.0+ 510 STR str $a eq $b 3.68 3.27 5.00 5.00 4.00 18.00 511 STR str $a eq $b (same obj) 3.35 3.11 5.00 5.00 4.00 17.00 512 STR str $a equal "" 2.42 2.44 4.00 4.00 3.00 17.00 513 STR str $a ne $b 3.70 3.38 5.00 6.00 4.00 16.00 514 STR str $a ne $b (same obj) 3.33 3.26 5.00 6.00 5.00 17.00 515 STR str num == "" 3.00 2.72 2.00 4.00 3.00 16.00 516 STR string compare 3.46 3.31 4.00 4.00 4.00 8.00 517 STR string compare "" 3.21 3.08 4.00 5.00 4.00 13.00 518 STR string compare long 39.01 38.17 39.00 39.00 38.00 240.00 519 STR string compare long (same obj) 3.21 3.19 38.00 38.00 38.00 237.00 520 STR string compare mixed long 61.08 60.40 44.00 44.00 42.00 238.00 521 STR string compare uni long 44.96 44.68 44.00 44.00 38.00 232.00 522 STR string equal "" 2.71 2.93 4.00 4.00 4.00 13.00 523 STR string equal long (!= len) 8.31 8.18 44.00 45.00 43.00 287.00 524 STR string equal long (== len) 38.35 38.11 40.00 40.00 39.00 286.00 525 STR string equal long (same obj) 3.61 3.97 39.00 39.00 38.00 284.00 526 STR string equal mixed long 3.69 3.62 39.00 40.00 39.00 282.00 527 STR string equal uni long 44.20 43.13 44.00 45.00 39.00 269.00 528 STR/LIST length, obj shimmer 412.48 419.51 477.00 467.00 2.00 243.00 529 SWITCH 1st true 2.35 5.55 5.00 4.00 4.00 16.00 530 SWITCH 2nd true 2.21 5.64 5.00 5.00 4.00 15.00 531 SWITCH 9th true 2.26 6.13 5.00 5.00 5.00 16.00 532 SWITCH default true 2.29 6.30 6.00 6.00 5.00 17.00 533 TRACE all set (rwu) 5.30 5.21 4.00 4.00 4.00 7.00 534 TRACE no trace set 6.44 6.46 4.00 4.00 4.00 8.00 535 TRACE read 5.03 4.82 5.00 5.00 4.00 8.00 536 TRACE unset 5.14 4.77 4.00 4.00 5.00 8.00 537 TRACE write 4.98 4.90 4.00 4.00 4.00 7.00 538 UNSET catch var !exist 18.83 10.25 9.00 9.00 9.00 7.00 539 UNSET catch var exists 3.43 2.33 3.00 3.00 2.00 3.00 540 UNSET info check var !exist 2.35 2.58 2.00 2.00 2.00 4.00 541 UNSET info check var exists 3.04 3.04 2.00 2.00 2.00 4.00 542 UNSET nocomplain var !exist 2.36 2.35 9.00 9.00 8.00 6.00 543 UNSET nocomplain var exists 2.48 2.33 2.00 2.00 2.00 3.00 544 UNSET var exists 2.27 3.89 2.00 2.00 1.00 2.00 545 VAR 'array set' of 100 elems 28.08 27.93 50.00 52.00 40.00 88.00 546 VAR 100 'set's in array 28.48 23.40 26.00 28.00 27.00 84.00 547 VAR access global 3.31 4.03 5.00 4.00 4.00 7.00 548 VAR access local proc arg 1.99 2.08 2.00 3.00 2.00 7.00 549 VAR access locally set 3.27 1.98 2.00 2.00 2.00 5.00 550 VAR access upvar 3.64 3.20 4.00 5.00 4.00 7.00 551 VAR incr global var 1000x 487.92 415.77 788.00 688.00 671.00 4203.00 552 VAR incr local var 1000x 473.91 403.75 702.00 687.00 664.00 4226.00 553 VAR incr upvar var 1000x 487.13 449.20 738.00 702.00 672.00 4000.00 554 VAR mset 4.62 4.19 5.00 5.00 5.00 19.00 555 VAR mset (foreach) 2.50 2.47 2.00 2.00 2.00 10.00 556 VAR ref absolute 84.99 78.33 116.00 110.00 83.00 8.0+ 557 VAR ref local 10.71 13.10 22.00 21.00 20.00 8.0+ 558 VAR ref variable 12.71 14.65 67.00 66.00 50.00 8.0+ 559 VAR set array element 3.03 2.91 2.00 2.00 2.00 3.00 560 VAR set scalar 1.67 1.74 1.00 1.00 1.00 3.00 561 WORDCOUNT wc1 880.86 913.56 1002.00 1035.00 327.00 558.00 562 WORDCOUNT wc2 203.20 197.28 500.00 524.00 226.00 329.00 563 WORDCOUNT wc3 187.72 182.69 464.00 486.00 206.00 248.00 563 BENCHMARKS 1:8.5a6 2:8.4.14 3:8.3.5 4:8.2.3 5:8.0.5 6:7.6p2 FINISHED 2006-11-13 12:33:01 ---- [JH]: The numbers below by Kevin are for a previous set of numbers, and need updating (note only 8.4a3 is mentioned). The only thing likely to change though is to show that 8.4 is pulling ahead in performance. [Kevin Kenny]: For those that insist on a single figure of merit, I took these numbers, normalized them to a scale of 8.4a3 == 1.0, and then took the harmonic mean of all benchmarks. ---- Version Relative Speed Comments ---- 7.6p2 0.125 The last version without bytecode compilation ---- 8.0.5 0.736 Bytecode compilation initially sped things up by a factor of about 6. ---- 8.2.3 0.600 The cost of internationalization was that things got about 20% slower. ---- 8.3.1 0.606 Not much change here.... ---- 8.4a3 1.000 The reference against which the others were measured. Many more operations are bytecoded, which gains about 50% in speed. ---- As with all benchmarks, take these numbers with a spoonful of salt! ---- [TCL benchmarks compared with other languages] ---- [Category Performance]