Version 19 of Tcl Benchmarks

Updated 2006-11-13 21:41:38 by JH

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 [L1 ] 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 [L2 ] 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/linux-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