Version 22 of Tcl Benchmarks

Updated 2007-11-16 20:01:40 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. Additional major enhancements in 8.5 done by JH, Miguel Sofer and Donal Fellows.

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) with -O2 (no -mcpu modifiers).


 TCL_INTERP: 1:8.5b2.1 2:8.4.17 3:8.3.5 4:8.2.3 5:8.0.5 6:7.6p2
 STARTED 2007-11-16 11:21:08 (runbench.tcl v1.20)
 Benchmark 1:8.5b2.1 /home/jeffh/install/linux-ix86/bin/canon8.5
 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:08 elapsed
 124194 milliseconds
 Benchmark 2:8.4.17 /home/jeffh/install/linux-ix86/bin/canon8.4
 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:25 elapsed
 140805 milliseconds
 Benchmark 3:8.3.5 /home/jeffh/install/linux-ix86/bin/canon8.3
 abbccdeeeffghkllmmmmnpprrssstuvw 00:04:01 elapsed
 239211 milliseconds
 Benchmark 4:8.2.3 /home/jeffh/install/linux-ix86/bin/canon8.2
 abbccdeeeffghkllmmmmnpprrssstuvw 00:03:56 elapsed
 235704 milliseconds
 Benchmark 5:8.0.5 /home/jeffh/install/linux-ix86/bin/canon8.0
 abbccdeeeffghkllmmmmnpprrssstuvw 00:02:52 elapsed
 164640 milliseconds
 Benchmark 6:7.6p2 /home/jeffh/install/linux-ix86/bin/canon7.6
 abbccdeeeffghkllmmmmnpprrssstuvw 00:07:01 elapsed
 411967 milliseconds
 000 VERSIONS:                               1:8.5b2.1 2:8.4.17  3:8.3.5  4:8.2.3  5:8.0.5  6:7.6p2
 001 ARRAY genKeys 50                          262.01   296.83   335.00   317.00   294.00   412.00
 002 ARRAY genKeys 500                        2198.98  2549.10  2106.00  1834.00  1642.00  2862.00
 003 ARRAY makeHash 500 50                   60838.28 56050.50 55720.00 70902.00 63804.00 74695.00
 004 BASE64 decode 10                          101.12   120.13   148.00   143.00   130.00      -=-
 005 BASE64 decode 100                         818.23   953.50  1178.00  1223.00  1069.00      -=-
 006 BASE64 decode 1000                       7948.00  9122.85 11429.00 11784.00 11212.00      -=-
 007 BASE64 decode 10000                     76800.40 90911.90 113699.0 119166.0 103481.0      -=-
 008 BASE64 decode2 10                          99.32   124.17   145.00   148.00   125.00      -=-
 009 BASE64 decode2 100                        812.35   936.25  1152.00  1191.00  1036.00      -=-
 010 BASE64 decode2 1000                      7613.65  8936.10 11117.00 11777.00 10138.00      -=-
 011 BASE64 decode2 10000                    75943.10 89038.50 110281.0 117102.0 102030.0      -=-
 012 BASE64 decode3 10                          57.37    61.66    86.00    87.00    74.00      -=-
 013 BASE64 decode3 100                        377.07   442.70   676.00   670.00   587.00      -=-
 014 BASE64 decode3 1000                      3441.40  4008.05  6392.00  6406.00  5673.00      -=-
 015 BASE64 decode3 10000                    33785.20 40319.30 64162.00 64523.00 56981.00      -=-
 016 BASE64 encode 10                           79.80    81.40   113.00   117.00   107.00      -=-
 017 BASE64 encode 100                         516.42   518.40   821.00   839.00   856.00      -=-
 018 BASE64 encode 1000                       4886.40  4879.90  7985.00  8115.00  8106.00      -=-
 019 BASE64 encode 10000                     49842.40 48756.80 79848.00 83991.00 81568.00      -=-
 020 BASE64 encode2 10                          53.51    67.86    97.00    94.00   113.00      -=-
 021 BASE64 encode2 100                        373.80   476.90   815.00   808.00  1087.00      -=-
 022 BASE64 encode2 1000                      3625.20  4524.60  7919.00  7881.00 10772.00      -=-
 023 BASE64 encode2 10000                    36071.00 45168.20 78694.00 81331.00 107290.0      -=-
 024 BASE64 encode3 10                          41.85    43.25    56.00    54.00    46.00      -=-
 025 BASE64 encode3 100                        187.20   234.25   387.00   374.00   329.00      -=-
 026 BASE64 encode3 1000                      1607.45  2054.50  3608.00  3437.00  3019.00      -=-
 027 BASE64 encode3 10000                    15538.80 19798.30 36181.00 34282.00 30671.00      -=-
 028 BIN bitset-v1 1000 chars                 3732.08  4333.34  4858.00  5167.00  4274.00      -=-
 029 BIN bitset-v1 5000 chars                17060.24 20149.11 22783.00 25375.00 21595.00      -=-
 030 BIN bitset-v1 10000 chars               34528.53 40010.20 45100.00 49079.00 43058.00      -=-
 031 BIN bitset-v2 1000 chars                 2319.63  2433.38  2913.00  2693.00  2512.00      -=-
 032 BIN bitset-v2 5000 chars                10849.42 11917.48 14666.00 13472.00 12597.00      -=-
 033 BIN bitset-v2 10000 chars               23528.67 23573.47 29482.00 27277.00 25287.00      -=-
 034 BIN bitset-v3 1000 chars                  892.86   830.77  1616.00  1538.00  1295.00      -=-
 035 BIN bitset-v3 5000 chars                 4589.19  3783.94  8485.00  7860.00  6757.00      -=-
 036 BIN bitset-v3 10000 chars                9165.25  7493.00 17131.00 15827.00 14067.00      -=-
 037 BIN c scan, 1000b                         277.45   273.94   129.00   130.00    99.00      -=-
 038 BIN c scan, 5000b                         913.44  1026.94   631.00   641.00   488.00      -=-
 039 BIN c scan, 10000b                       1791.19  1666.71  1432.00  1443.00  1167.00      -=-
 040 BIN chars, 10000b                        7976.80  7676.92 17328.00 16499.00 14019.00      -=-
 041 BIN u char, 10000b                       1699.41      -=-      -=-      -=-      -=-      -=-
 042 CATCH error, complex                       17.85     9.33     9.00     7.00     6.00     8.00
 043 CATCH no catch used                         5.77     3.69     3.00     4.00     3.00     4.00
 044 CATCH return error                         17.98    10.02     7.00     7.00     6.00     9.00
 045 CATCH return except                         4.77     3.34     3.00     3.00     2.00     4.00
 046 CATCH return ok                             6.20     3.90     4.00     3.00     3.00     5.00
 047 DATA access in a list                     184.69   259.10   632.00   608.00   563.00 12348.00
 048 DATA access in an array                   524.91   394.83   666.00   670.00   612.00  1801.00
 049 DATA create in a list                     216.02   210.84   737.00   644.00   656.00  1675.00
 050 DATA create in an array                   816.12   683.93   924.00   916.00  1225.00  2096.00
 051 ENC iso2022-jp, gets                      210.90  8217.77  2834.00  2814.00      -=-      -=-
 052 ENC iso2022-jp, read                      159.40  8261.93  2743.00  2738.00      -=-      -=-
 053 ENC iso2022-jp, read & size               169.23  8276.03  2780.00  2810.00      -=-      -=-
 054 ENC iso8859-2, gets                       196.60   283.63   195.00   169.00      -=-      -=-
 055 ENC iso8859-2, read                       154.87   238.80   137.00   130.00      -=-      -=-
 056 ENC iso8859-2, read & size                159.27   250.57   146.00   140.00      -=-      -=-
 057 EVAL cmd and mixed lists                  670.08   708.31   541.00  1527.00  1111.00   164.00
 058 EVAL cmd eval as list                       3.31     3.18     4.00     6.00     6.00     4.00
 059 EVAL cmd eval as string                    10.06     8.06     6.00     7.00     6.00     3.00
 060 EVAL cmd eval in list obj var               5.09     4.20     3.00     9.00     7.00     4.00
 061 EVAL list cmd and mixed lists             664.60   703.51   562.00  1544.00  1106.00   164.00
 062 EVAL list cmd and pure lists               62.73    53.66    37.00  1547.00  1107.00   162.00
 063 EXPR $a != $b int                           2.17     2.47     2.00     2.00     2.00     9.00
 064 EXPR $a != $b str (!= len)                  4.86     5.34     5.00     5.00     5.00    15.00
 065 EXPR $a != $b str (== len)                  4.85     6.08     7.00     6.00     5.00    14.00
 066 EXPR $a == $b int                           2.07     2.52     2.00     2.00     2.00    10.00
 067 EXPR $a == $b str (!= len)                  4.63     5.24     5.00     5.00     5.00    14.00
 068 EXPR $a == $b str (== len)                  5.83     7.32     5.00     5.00     6.00    15.00
 069 EXPR braced                                 5.84     4.66     7.00     4.00     4.00    22.00
 070 EXPR fifty operands                         8.65     8.04    10.00     9.00     7.00    32.00
 071 EXPR incr with expr                         1.72     1.59     2.00     1.00     1.00     3.00
 072 EXPR incr with incr                         1.57     1.54     2.00     1.00     1.00     3.00
 073 EXPR inline                                 6.25     6.20     5.00     5.00     4.00    10.00
 074 EXPR one operand                            1.65     1.62     1.00     1.00     1.00     2.00
 075 EXPR ten operands                           2.71     2.76     3.00     3.00     2.00     8.00
 076 EXPR unbraced                              71.28    36.89    31.00    27.00    21.00    20.00
 077 FCOPY binary: 160K                       2392.34  2373.54  2431.00  2486.00      -=-      -=-
 078 FCOPY encoding: 160K                     6953.41  6741.22  2391.00  2497.00      -=-      -=-
 079 FCOPY std: 160K                          2395.06  2396.57  2395.00  2447.00  2887.00  2754.00
 080 FILE exec interp                         7678.53  6150.17  5785.00  4942.00  5409.00  2869.00
 081 FILE exec interp: pkg require           25401.90 16862.70 13378.00 11819.00  7560.00  4169.00
 082 FILE exists tmpfile (obj)                   4.07     4.40     4.00     4.00     3.00     3.00
 083 FILE exists ~                               3.48     3.69    93.00    88.00     3.00     6.00
 084 FILE exists! tmpfile (obj)                  3.63     3.95     4.00     4.00     3.00     3.00
 085 FILE exists! tmpfile (str)                  9.94    22.27     5.00     5.00     3.00     3.00
 086 FILE glob  tmpdir (60 entries)            130.85   159.45   122.00   135.00    96.00    94.00
 087 FILE glob / all subcommands              6471.32  6722.30  6430.00  6435.00  5138.00  4931.00
 088 FILE glob / atime                        1168.27  1150.62   456.00   500.00   379.00   448.00
 089 FILE glob / attributes                   2293.36  2052.22  1363.00  1515.00  1054.00      -=-
 090 FILE glob / dirname                       199.37   605.84   288.00   356.00   298.00   308.00
 091 FILE glob / executable                   1130.02  1134.90   424.00   487.00   354.00   394.00
 092 FILE glob / exists                       1138.07  1143.67   415.00   487.00   357.00   398.00
 093 FILE glob / extension                     228.15   337.17   197.00   270.00   220.00   230.00
 094 FILE glob / isdirectory                  1148.47  1157.27   429.00   493.00   373.00   398.00
 095 FILE glob / isfile                       1150.33  1143.13   429.00   505.00   376.00   400.00
 096 FILE glob / mtime                        1157.17  1158.44   433.00   502.00   375.00   626.00
 097 FILE glob / owned                        1165.71  1174.62   443.00   512.00   394.00   414.00
 098 FILE glob / readable                     1137.16  1132.85   404.00   479.00   365.00   399.00
 099 FILE glob / rootname                      237.94   339.96   201.00   269.00   222.00   232.00
 100 FILE glob / size                         1162.60  1153.21   425.00   503.00   371.00   434.00
 101 FILE glob / tail                          201.95   473.43   254.00   328.00   274.00   277.00
 102 FILE glob / writable                     1141.31  1150.35   415.00   496.00   362.00   389.00
 103 FILE recurse / -dir                      4751.51  5953.52  4010.00  4187.00  4026.00  3874.00
 104 FILE recurse / cd                        5014.16  9111.18  3734.00  3779.00  3806.00  3545.00
 105 GCCont_cpb::cGCC 50                        87.88    83.06   199.00   197.00   149.00      -=-
 106 GCCont_cpb::cGCC 500                      492.41   421.06  1302.00  1338.00  1122.00      -=-
 107 GCCont_cpb::cGCC 5000                    4612.04  3639.32 11839.00 12446.00 10567.00      -=-
 108 GCCont_cpbre1::cGCC 50                    115.37   121.57   122.00      -=-      -=-      -=-
 109 GCCont_cpbre1::cGCC 500                   805.94   825.16   745.00      -=-      -=-      -=-
 110 GCCont_cpbre1::cGCC 5000                 7654.28  7840.16  6912.00      -=-      -=-      -=-
 111 GCCont_cpbre2::cGCC 50                     87.37    93.00    91.00      -=-      -=-      -=-
 112 GCCont_cpbre2::cGCC 500                   642.01   719.25   621.00      -=-      -=-      -=-
 113 GCCont_cpbre2::cGCC 5000                 6192.74  6811.24  5946.00      -=-      -=-      -=-
 114 GCCont_cpbrs2::cGCC 50                     33.60    35.80   100.00   100.00      -=-      -=-
 115 GCCont_cpbrs2::cGCC 500                   131.80   135.85   742.00   761.00      -=-      -=-
 116 GCCont_cpbrs2::cGCC 5000                 1075.14  1087.88  7062.00  7393.00      -=-      -=-
 117 GCCont_cpbrs::cGCC1 50                     51.07    55.92   156.00   156.00    84.00      -=-
 118 GCCont_cpbrs::cGCC1 500                   159.82   164.86   886.00   912.00   194.00      -=-
 119 GCCont_cpbrs::cGCC1 5000                 1184.66  1207.58  7899.00  8201.00  1062.00      -=-
 120 GCCont_cpbrs::cGCC2 50                     46.68    51.48   162.00   160.00    81.00      -=-
 121 GCCont_cpbrs::cGCC2 500                   146.16   152.54   914.00   949.00   179.00      -=-
 122 GCCont_cpbrs::cGCC2 5000                 1086.34  1116.80  8240.00  8465.00   953.00      -=-
 123 GCCont_cpbrs_trap::cGCC 50                103.76   109.61   106.00   113.00    66.00      -=-
 124 GCCont_cpbrs_trap::cGCC 500               711.95   769.16   695.00   762.00   409.00      -=-
 125 GCCont_cpbrs_trap::cGCC 5000             6736.56  7295.26  6579.00  7139.00  3634.00      -=-
 126 GCCont_expr::cGCC 50                       97.69    87.36    79.00    77.00      -=-      -=-
 127 GCCont_expr::cGCC 500                     436.77  1022.94   971.00   960.00      -=-      -=-
 128 GCCont_expr::cGCC 5000                   3829.30 76596.34 63702.00 57131.00      -=-      -=-
 129 GCCont_i::cGCC1 50                         68.20   140.86   169.00   165.00   126.00      -=-
 130 GCCont_i::cGCC1 500                       534.60  1289.43  1536.00  1486.00  1278.00      -=-
 131 GCCont_i::cGCC1 5000                     5193.20 12551.62 14905.00 14696.00 12780.00      -=-
 132 GCCont_i::cGCC2 50                         54.68    52.74    87.00    96.00    67.00      -=-
 133 GCCont_i::cGCC2 500                       430.32   401.23   702.00   785.00   676.00      -=-
 134 GCCont_i::cGCC2 5000                     4218.88  3969.30  6947.00  7871.00  6838.00      -=-
 135 GCCont_i::cGCC3 50                         49.55    46.43    77.00    91.00    63.00      -=-
 136 GCCont_i::cGCC3 500                       372.26   337.61   631.00   711.00   619.00      -=-
 137 GCCont_i::cGCC3 5000                     3613.68  3266.28  6053.00  7165.00  6227.00      -=-
 138 GCCont_r1::cGCC 50                         73.96   163.93   236.00   212.00   165.00      -=-
 139 GCCont_r1::cGCC 500                       695.55  1595.81  2280.00  2021.00  1598.00      -=-
 140 GCCont_r1::cGCC 5000                     6968.24 15783.64 22759.00 19979.00 15806.00      -=-
 141 GCCont_r2::cGCC 50                         66.30   155.69   183.00   174.00   133.00      -=-
 142 GCCont_r2::cGCC 500                       571.35  1397.66  1662.00  1603.00  1311.00      -=-
 143 GCCont_r2::cGCC 5000                     5616.84 13827.50 16142.00 16119.00 13376.00      -=-
 144 GCCont_r3::cGCC 50                         71.25   155.38   179.00   179.00   134.00      -=-
 145 GCCont_r3::cGCC 500                       595.42  1406.14  1647.00  1620.00  1347.00      -=-
 146 GCCont_r3::cGCC 5000                     5823.22 13796.44 16111.00 16135.00 13276.00      -=-
 147 GCCont_rsf1::cGCC 50                       63.51    61.73    84.00   103.00      -=-      -=-
 148 GCCont_rsf1::cGCC 500                     437.31   394.50   561.00   777.00      -=-      -=-
 149 GCCont_rsf1::cGCC 5000                   4161.40  3679.70  5265.00  7604.00      -=-      -=-
 150 GCCont_rsf2::cGCC1 50                      40.48    40.73    55.00    66.00      -=-      -=-
 151 GCCont_rsf2::cGCC1 500                    223.26   208.75   333.00   426.00      -=-      -=-
 152 GCCont_rsf2::cGCC1 5000                  2020.26  1838.06  3023.00  4002.00      -=-      -=-
 153 GCCont_rsf2::cGCC2 50                      36.53    37.33    45.00    53.00      -=-      -=-
 154 GCCont_rsf2::cGCC2 500                    213.48   198.51   302.00   398.00      -=-      -=-
 155 GCCont_rsf2::cGCC2 5000                  1951.54  1736.62  2812.00  3782.00      -=-      -=-
 156 GCCont_rsf3::cGCC 50                       37.44    37.14    44.00    54.00      -=-      -=-
 157 GCCont_rsf3::cGCC 500                     210.96   200.43   303.00   396.00      -=-      -=-
 158 GCCont_rsf3::cGCC 5000                   1933.66  1752.14  2799.00  3773.00      -=-      -=-
 159 GCCont_turing::cGCC 50                     26.53    32.39    40.00    40.00      -=-      -=-
 160 GCCont_turing::cGCC 500                   125.12   128.04   228.00   230.00      -=-      -=-
 161 GCCont_turing::cGCC 5000                 1069.82  1108.32  2118.00  2137.00      -=-      -=-
 162 HEAPSORT size 10                          113.54   101.40   132.00   129.00  1393.00   727.00
 163 HEAPSORT size 50                         1010.52   856.11  1097.00  1087.00  8234.00  5938.00
 164 HEAPSORT size 100                        2434.11  2119.75  2648.00  2607.00 17141.00 14021.00
 165 HEAPSORT2 size 10                          70.60    93.31      -=-      -=-      -=-      -=-
 166 HEAPSORT2 size 50                         574.72   790.25      -=-      -=-      -=-      -=-
 167 HEAPSORT2 size 100                       1402.50  1957.20      -=-      -=-      -=-      -=-
 168 IF 1/0 check                                1.72     1.71     2.00     2.00     2.00     7.00
 169 IF else true al                             3.49     5.38     6.00     5.00     4.00    14.00
 170 IF else true numeric                        2.39     3.73     3.00     3.00     3.00    12.00
 171 IF elseif true al                           3.58     4.70     5.00     5.00     5.00    14.00
 172 IF elseif true numeric                      2.44     2.85     4.00     4.00     4.00    12.00
 173 IF if false al/al                           2.69     3.90     4.00     4.00     3.00    10.00
 174 IF if false al/num                          2.85     3.12     3.00     3.00     3.00    13.00
 175 IF if false num/num                         2.31     2.59     3.00     2.00     2.00    10.00
 176 IF if true al                               2.65     3.01     4.00     3.00     3.00    10.00
 177 IF if true al/al                            2.65     3.31     4.00     4.00     3.00    10.00
 178 IF if true num/num                          2.26     2.48     3.00     2.00     2.00    10.00
 179 IF if true numeric                          3.35     2.40     2.00     2.00     2.00    10.00
 180 IF multi 1st true                           2.31     2.43     2.00     2.00     2.00    16.00
 181 IF multi 2nd true                           2.44     2.51     3.00     3.00     3.00    17.00
 182 IF multi 9th true                           3.45     4.26     6.00     6.00     5.00    32.00
 183 IF multi default true                       3.67     4.21     6.00     6.00     6.00    32.00
 184 KLIST shuffle0 llength 1                   11.71    12.26    20.00    19.00    17.00     8.0+
 185 KLIST shuffle0 llength 10                  40.72    43.52    76.00    73.00    69.00     8.0+
 186 KLIST shuffle0 llength 100                344.41   345.28   591.00   582.00   508.00     8.0+
 187 KLIST shuffle0 llength 1000              3971.49  3938.92  6430.00  6222.00  5499.00     8.0+
 188 KLIST shuffle0 llength 10000            92068.50 95918.50 113277.0 111659.0 95712.00      -=-
 189 KLIST shuffle1-s llength 1                  9.57    10.50    14.00    12.00     9.00    41.00
 190 KLIST shuffle1-s llength 10                53.95    74.76    93.00    65.00    60.00   272.00
 191 KLIST shuffle1-s llength 100             1075.69  1071.40  1405.00   949.00   883.00  4894.00
 192 KLIST shuffle1-s llength 1000           61642.31 69865.78 66439.00 42532.00 45002.00 270498.0
 193 KLIST shuffle1a llength 1                  12.58    13.13    15.00    14.00    10.00    40.00
 194 KLIST shuffle1a llength 10                 71.86    74.83    84.00    80.00    70.00   341.00
 195 KLIST shuffle1a llength 100               698.13   717.42   767.00   759.00   678.00  6333.00
 196 KLIST shuffle1a llength 1000             7019.35  7248.84  7635.00  7732.00  6907.00 330389.0
 197 KLIST shuffle1a llength 10000           74390.00 74914.80 80300.00 81306.00 76535.00      -=-
 198 KLIST shuffle2 llength 1                   12.98    11.53    17.00    15.00    17.00    41.00
 199 KLIST shuffle2 llength 10                  83.28    58.87    81.00    76.00   103.00   264.00
 200 KLIST shuffle2 llength 100                825.82   552.03   757.00   698.00   951.00  2500.00
 201 KLIST shuffle2 llength 1000              9172.97  6345.04  8287.00  7431.00  9825.00 25333.00
 202 KLIST shuffle2 llength 10000            112780.2 81209.30 99509.00 91009.00 117807.0      -=-
 203 KLIST shuffle3 llength 1                    9.68    10.36    14.00    14.00    10.00    31.00
 204 KLIST shuffle3 llength 10                  53.74    51.32    71.00    65.00    60.00   247.00
 205 KLIST shuffle3 llength 100                510.26   491.79   606.00   610.00   523.00  3170.00
 206 KLIST shuffle3 llength 1000              5498.44  5231.51  6587.00  6524.00  5712.00 101754.0
 207 KLIST shuffle3 llength 10000            97992.50 94799.60 110181.0 121676.0 108634.0      -=-
 208 KLIST shuffle4 llength 1                    9.79    11.06    15.00    15.00    11.00    32.00
 209 KLIST shuffle4 llength 10                  54.91    53.43    80.00    72.00    67.00   269.00
 210 KLIST shuffle4 llength 100                518.53   506.89   690.00   656.00   592.00  4139.00
 211 KLIST shuffle4 llength 1000              5156.37  5055.02  6821.00  6541.00  5792.00 176062.0
 212 KLIST shuffle4 llength 10000            55824.10 55566.50 73462.00 69937.00 63144.00      -=-
 213 KLIST shuffle5-s llength 1                  6.16     5.64     6.00     6.00     5.00    26.00
 214 KLIST shuffle5-s llength 10                40.20    42.74    54.00    36.00    33.00   171.00
 215 KLIST shuffle5-s llength 100              518.18   597.26   757.00   443.00   420.00  2012.00
 216 KLIST shuffle5-s llength 1000           19174.01 21709.60 25938.00 13926.00 14690.00 57967.00
 217 KLIST shuffle5a llength 1                   7.21     7.32     8.00     7.00     6.00    29.00
 218 KLIST shuffle5a llength 10                 50.50    47.51    48.00    44.00    38.00   205.00
 219 KLIST shuffle5a llength 100               491.27   466.88   445.00   401.00   352.00  2553.00
 220 KLIST shuffle5a llength 1000             5388.67  5057.30  4920.00  4374.00  3944.00 75134.00
 221 KLIST shuffle5a llength 10000           95442.90 92041.60 92842.00 87894.00 85070.00      -=-
 222 KLIST shuffle6 llength 1                    2.13     2.03      -=-      -=-      -=-      -=-
 223 KLIST shuffle6 llength 10                  24.54    23.09      -=-      -=-      -=-      -=-
 224 KLIST shuffle6 llength 100                242.39   213.30      -=-      -=-      -=-      -=-
 225 KLIST shuffle6 llength 1000              2450.61  2158.91      -=-      -=-      -=-      -=-
 226 KLIST shuffle6 llength 10000            28344.60 25894.80      -=-      -=-      -=-      -=-
 227 LIST append to list                         2.50     2.53     4.00     4.00     3.00     3.00
 228 LIST concat APPEND 2x10                    12.02    12.38    20.00    13.00    10.00     6.00
 229 LIST concat APPEND 2x100                   89.39    98.12   116.00   101.00    88.00    23.00
 230 LIST concat APPEND 2x1000                 805.88   862.29  1010.00   907.00   764.00   160.00
 231 LIST concat APPEND 2x10000               8914.36  9618.55 10909.00  9682.00  8549.00  1553.00
 232 LIST concat CONCAT 2x10                     4.15     4.64     5.00    11.00     8.00     7.00
 233 LIST concat CONCAT 2x100                    6.04     6.92     7.00    89.00    75.00    28.00
 234 LIST concat CONCAT 2x1000                  28.23    36.26    34.00   813.00   687.00   197.00
 235 LIST concat CONCAT 2x10000                353.83   380.76   442.00  8688.00  7624.00  1920.00
 236 LIST concat EVAL/LAPPEND 2x10               6.80     9.24    11.00    17.00    12.00    10.00
 237 LIST concat EVAL/LAPPEND 2x100             14.17    13.84    14.00    41.00    34.00    49.00
 238 LIST concat EVAL/LAPPEND 2x1000            67.22    56.08    49.00   263.00   244.00   366.00
 239 LIST concat EVAL/LAPPEND 2x10000          768.52   730.72   584.00  3872.00  2605.00  3778.00
 240 LIST concat FOREACH/LAPPEND 2x10            8.37    12.22    18.00    17.00    12.00    20.00
 241 LIST concat FOREACH/LAPPEND 2x100          48.36    36.07   122.00   107.00   102.00   136.00
 242 LIST concat FOREACH/LAPPEND 2x1000        446.67   338.01  1014.00   968.00   910.00  1146.00
 243 LIST concat FOREACH/LAPPEND 2x10000      4570.02  3409.39 10478.00  9910.00  8837.00 11654.00
 244 LIST concat SET 2x10                       10.57    10.69    12.00    10.00     9.00     6.00
 245 LIST concat SET 2x100                      82.31    87.42    95.00    90.00    78.00    24.00
 246 LIST concat SET 2x1000                    753.60   797.67   882.00   822.00   686.00   172.00
 247 LIST concat SET 2x10000                  8285.99  8461.66  9993.00  8702.00  7668.00  1743.00
 248 LIST exact search, first item               2.80     2.94     2.00     2.00     2.00   155.00
 249 LIST exact search, last item               13.37    12.95    12.00    12.00    11.00   155.00
 250 LIST exact search, middle item              4.73     4.64     4.00     4.00     3.00   151.00
 251 LIST exact search, non-item                37.29    37.06    35.00    35.00    33.00   160.00
 252 LIST exact search, typed item               7.30     8.39    12.00    12.00    11.00   153.00
 253 LIST exact search, untyped item            13.30    13.29    12.00    12.00    12.00   151.00
 254 LIST index first element                    2.09     2.38     2.00     2.00     2.00    31.00
 255 LIST index last element                     2.36     2.56     2.00     2.00     2.00    49.00
 256 LIST index middle element                   2.19     2.36     2.00     2.00     2.00    42.00
 257 LIST insert an item at "end"               16.73    17.89    19.00    17.00    14.00   113.00
 258 LIST insert an item at middle              15.89    18.69    20.00    18.00    16.00    57.00
 259 LIST insert an item at start               15.75    19.03    21.00    19.00    16.00    47.00
 260 LIST iterate list                         455.20   602.30  1301.00  1197.00  1284.00 127600.0
 261 LIST join list                            244.41   277.66   248.00   245.00   186.00   282.00
 262 LIST large, early range                     5.31     5.80     5.00     5.00     4.00    44.00
 263 LIST large, late range                      5.14     5.95     5.00     5.00     4.00    48.00
 264 LIST length, pure list                      2.09     2.25     2.00     2.00     2.00   170.00
 265 LIST list                                   7.37     7.01     8.00     7.00     6.00    17.00
 266 LIST lset foreach  l                      589.67   659.15     =8.4     =8.4     =8.4     =8.4
 267 LIST lset foreach  list                   589.82   657.42     =8.4     =8.4     =8.4     =8.4
 268 LIST lset foreach ""s l                   140.30   170.99     =8.4     =8.4     =8.4     =8.4
 269 LIST lset foreach ""s list                140.24   169.16     =8.4     =8.4     =8.4     =8.4
 270 LIST regexp search, first item              3.08     5.61     5.00     7.00     2.00   156.00
 271 LIST regexp search, last item              49.20   321.36   312.00   315.00    53.00   227.00
 272 LIST regexp search, non-item               93.63   674.91   657.00   656.00    81.00   243.00
 273 LIST remove first element                  16.13    18.68    21.00    18.00    16.00    43.00
 274 LIST remove in mixed list                  16.22    23.36    24.00   424.00    20.00    56.00
 275 LIST remove last element                   16.01    18.86    21.00    17.00    15.00    62.00
 276 LIST remove middle element                 16.04    18.36    20.00    18.00    16.00    55.00
 277 LIST replace first el with multiple        16.61    18.92    21.00    18.00    16.00    49.00
 278 LIST replace first element                 16.21    17.15    19.00    16.00    14.00    47.00
 279 LIST replace in mixed list                 16.35    22.04    23.00   423.00    20.00    59.00
 280 LIST replace last el with multiple         16.77    17.66    19.00    16.00    15.00   129.00
 281 LIST replace last element                  16.56    17.23    19.00    16.00    14.00   113.00
 282 LIST replace middle el with multiple       16.69    18.48    20.00    18.00    16.00    91.00
 283 LIST replace middle element                16.73    17.55    18.00    16.00    14.00    88.00
 284 LIST replace range                          5.58    24.23    25.00    24.00    15.00    84.00
 285 LIST small, early range                     3.15     3.51     3.00     3.00     2.00    35.00
 286 LIST small, late range                      3.06     3.62     3.00     3.00     2.00    46.00
 287 LIST sort                                 488.86   450.29   451.00   418.00   402.00   537.00
 288 LIST sorted search, first item              3.31     3.13     2.00     2.00     2.00   152.00
 289 LIST sorted search, last item               3.10     3.30    13.00    12.00    11.00   155.00
 290 LIST sorted search, middle item             3.01     3.22     4.00     4.00     3.00   149.00
 291 LIST sorted search, non-item                3.05     3.40    35.00    35.00    33.00   155.00
 292 LIST sorted search, typed item              2.98     3.29    12.00    12.00    11.00   151.00
 293 LIST typed sort                           361.23   390.27   528.00   336.00   303.00  1765.00
 294 LOOP for (to 1000)                        239.63   270.89   490.00   513.00   517.00  3080.00
 295 LOOP for, iterate list                    352.80   495.23   970.00  1072.00   931.00 45006.00
 296 LOOP for, iterate string                  614.89   701.66  1362.00  1306.00  1178.00  7432.00
 297 LOOP foreach, iterate list                378.93   254.60   382.00   400.00   381.00  1079.00
 298 LOOP foreach, iterate string              425.48   298.70   423.00   732.00   714.00  1022.00
 299 LOOP while (to 1000)                      238.25   274.89   490.00   518.00   517.00  3055.00
 300 LOOP while 1 (to 1000)                    187.37   248.17   434.00   474.00   494.00  3238.00
 301 MAP ([chars])-case regsub                  59.13    53.85    48.00    53.00    11.00    16.00
 302 MAP http mapReply                       12905.58 20505.12 18750.00 19166.00 16352.00  7511.00
 303 MAP regsub -nocase, no match              269.63   261.84   586.00   548.00   243.00   267.00
 304 MAP regsub 1 val                          206.44   212.26   815.00   809.00   138.00   244.00
 305 MAP regsub 1 val -nocase                  314.81   302.09   812.00   800.00   228.00   288.00
 306 MAP regsub 2 val                          567.07   568.00  3774.00  3750.00   360.00   581.00
 307 MAP regsub 2 val -nocase                  762.09   836.89  3813.00  3759.00   514.00   672.00
 308 MAP regsub 3 val                          817.60   884.40  5134.00  5117.00   474.00   768.00
 309 MAP regsub 3 val -nocase                 1101.79  1041.85  5162.00  5150.00   642.00   894.00
 310 MAP regsub 4 val                         1050.81  1034.40  6466.00  6400.00   610.00   948.00
 311 MAP regsub 4 val -nocase                 1392.36  1328.67  6484.00  6418.00   829.00  1109.00
 312 MAP regsub short                            8.73    11.00    30.00    34.00     7.00    17.00
 313 MAP regsub, no match                       78.58    76.83   569.00   541.00   137.00   179.00
 314 MAP string -nocase, no match              467.08   424.92  4256.00  4308.00    nomap    nomap
 315 MAP string 1 val                          205.75   204.23  1423.00  1359.00    nomap    nomap
 316 MAP string 1 val -nocase                  318.32   322.85  2396.00  2450.00    nomap    nomap
 317 MAP string 2 val                          403.34   410.86  1451.00  1426.00    nomap    nomap
 318 MAP string 2 val -nocase                  608.60   594.28  3409.00  3424.00    nomap    nomap
 319 MAP string 3 val                          455.35   509.83  1675.00  1712.00    nomap    nomap
 320 MAP string 3 val -nocase                  722.37  1037.40  4240.00  4265.00    nomap    nomap
 321 MAP string 4 val                          573.57   571.14  1780.00  1819.00    nomap    nomap
 322 MAP string 4 val -nocase                  983.66   958.91  4852.00  4909.00    nomap    nomap
 323 MAP string short                            8.24     7.70     7.00     7.00    nomap    nomap
 324 MAP string, no match                      216.75   213.56  1923.00  1943.00    nomap    nomap
 325 MAP |-case regsub                          31.80    31.19    27.00    30.00     8.00    12.00
 326 MAP |-case strmap                           6.39     6.47     8.00     8.00    nomap    nomap
 327 MATRIX mult 5x5                           171.58   155.13   254.00   256.00   244.00  1060.00
 328 MATRIX mult 10x10                        1168.69  1037.74  1658.00  1660.00  1490.00  7819.00
 329 MATRIX mult 15x15                        3903.18  3433.84  5218.00  5225.00  4738.00 27620.00
 330 MATRIX transposition-0                   1453.96  1220.29  3420.00  3357.00  2923.00  7516.00
 331 MATRIX transposition-1                    707.99   930.58  2482.00  2733.00  2310.00 25912.00
 332 MD5 msg len 10                            418.55   398.01   418.00   408.00      -=-      -=-
 333 MD5 msg len 100                           739.85   677.42   711.00   691.00      -=-      -=-
 334 MD5 msg len 1000                         5110.10  4588.10  4810.00  4584.00      -=-      -=-
 335 MD5 msg len 10000                       49529.30 43895.90 46052.00 44158.00      -=-      -=-
 336 MTHD array stored proc call                 2.48     2.47     2.00     2.00     1.00      -=-
 337 MTHD call absolute                          4.64     4.57     5.00     5.00     4.00      -=-
 338 MTHD call relative                          5.45     5.52     6.00     5.00     5.00      -=-
 339 MTHD direct ns proc call                    1.73     1.65     1.00     2.00     1.00      -=-
 340 MTHD imported ns proc call                  1.77     1.81     2.00     2.00     1.00      -=-
 341 MTHD indirect proc eval                     4.82     5.03     5.00     9.00     9.00      -=-
 342 MTHD indirect proc eval #2                  4.16     7.34     8.00     8.00     8.00      -=-
 343 MTHD inline call                            0.86     0.75     1.00     1.00     1.00      -=-
 344 MTHD interp alias proc call                 2.01     2.21     3.00     3.00     2.00      -=-
 345 MTHD ns lookup call                        14.55    15.27    12.00    19.00    16.00      -=-
 346 MTHD switch method call                     8.58     6.92     6.00    11.00     9.00      -=-
 347 NS alternating                            368.16   371.35   328.00   468.00   201.00      -=-
 348 PARSE html form upload (7978)            2549.65  2824.25  3736.00  3435.00  2886.00      -=-
 349 PARSE html form upload (993570)         297425.2 321631.3 444170.0 414364.0 351853.0      -=-
 350 PROC do-nothing, no args                    1.42     1.41     1.00     4.00     1.00     1.00
 351 PROC do-nothing, one arg                    1.51     1.68     1.00     1.00     1.00     1.00
 352 PROC empty, no args                         0.45     0.42     1.00     4.00     1.00     1.00
 353 PROC empty, use args                        0.47     0.47     2.00     1.00     1.00     1.00
 354 PROC explicit return                        2.55     1.73     2.00     1.00     1.00     2.00
 355 PROC explicit return (2)                    1.53     1.57     2.00     2.00     2.00     3.00
 356 PROC explicit return (3)                    1.54     1.60     1.00     1.00     1.00     1.00
 357 PROC heavily commented                      1.56     1.50     1.00     1.00     1.00    72.00
 358 PROC implicit return                        1.68     2.79     2.00     1.00     1.00     2.00
 359 PROC implicit return (2)                    1.57     1.64     1.00     1.00     1.00     2.00
 360 PROC implicit return (3)                    1.54     1.49     1.00     1.00     1.00     1.00
 361 PROC local links with global               62.93   124.07   153.00   129.00   122.00   556.00
 362 PROC local links with upvar                60.47   108.84   138.00   111.00   107.00   544.00
 363 PROC local links with variable             59.19   101.90   130.00   104.00    64.00   541.00
 364 RE 1-char long-end                         15.19    21.91    19.00    15.00   214.00   219.00
 365 RE 1-char long-end catching                24.29    32.52    34.00    29.00   225.00   236.00
 366 RE 1-char long-middle                       9.95    11.87    10.00    10.00   108.00   115.00
 367 RE 1-char long-middle catching             18.77    22.12    23.00    23.00   118.00   126.00
 368 RE 1-char long-start                        4.23     4.66     4.00     4.00     3.00    13.00
 369 RE 1-char long-start catching              13.30    15.78    17.00    17.00    12.00    23.00
 370 RE 1-char short                             4.33     4.81     5.00     4.00     3.00     4.00
 371 RE 1-char short catching                   12.91    15.00    17.00    17.00    12.00    10.00
 372 RE basic                                    3.91     3.99     4.00     3.00     3.00     4.00
 373 RE basic catching                          14.42    18.14    18.00    18.00    12.00    10.00
 374 RE c-comment long                          21.64    23.35    19.00    19.00    19.00    30.00
 375 RE c-comment long catching                 61.57    62.71    63.00    64.00    32.00    51.00
 376 RE c-comment long nomatch                  28.23    35.49    31.00    28.00     4.00    22.00
 377 RE c-comment long nomatch catching         29.49    36.86    30.00    29.00     5.00    22.00
 378 RE c-comment long pmatch                   31.28    38.61    32.00    32.00   141.00   141.00
 379 RE c-comment long pmatch catching          32.44    39.01    32.00    32.00   133.00   150.00
 380 RE c-comment many *s                       32.37    39.17    33.00    32.00    35.00    52.00
 381 RE c-comment many *s catching              94.08   102.31    99.00   102.00    50.00    91.00
 382 RE c-comment nomatch                        5.97     6.41     6.00     6.00     3.00     4.00
 383 RE c-comment nomatch catching               6.84     7.19     6.00     6.00     3.00     6.00
 384 RE c-comment simple                        10.46    10.86    10.00    10.00     6.00     7.00
 385 RE c-comment simple catching               43.39    44.17    48.00    49.00    15.00    14.00
 386 RE count all matches                       29.05    31.94    28.00    72.00    77.00   135.00
 387 RE extract all matches                     33.56    36.38    32.00    98.00    75.00   173.00
 388 RE literal regexp                           7.09     8.91     8.00     7.00     4.00     4.00
 389 RE n-char long-end                         15.61    19.64    16.00    20.00   218.00   220.00
 390 RE n-char long-end catching                28.55    33.02    32.00    36.00   229.00   232.00
 391 RE n-char long-middle                       9.97    12.25    10.00    10.00   111.00   116.00
 392 RE n-char long-middle catching             21.79    26.33    27.00    26.00   121.00   128.00
 393 RE n-char long-start                        4.42     5.47     4.00     4.00     3.00    14.00
 394 RE n-char long-start catching              16.04    18.42    20.00    20.00    12.00    25.00
 395 RE n-char short                             4.66     5.13     4.00     4.00     3.00     4.00
 396 RE n-char short catching                   15.65    17.36    20.00    19.00    12.00    10.00
 397 RE static anchored match                    1.58     1.53     5.00     5.00     2.00     3.00
 398 RE static anchored match dot                1.86     6.54     5.00     5.00     2.00     3.00
 399 RE static anchored nomatch                  1.62     1.61     3.00     2.00     2.00     3.00
 400 RE static anchored nomatch dot              1.82     3.08     3.00     2.00     2.00     3.00
 401 RE static l-anchored match                  1.74     1.89     3.00     4.00     2.00     3.00
 402 RE static l-anchored nomatch                1.64     1.79     2.00     2.00     2.00     2.00
 403 RE static long match                        4.56     4.79    11.00    11.00     7.00    16.00
 404 RE static long nomatch                      5.72     6.58    17.00    16.00     7.00    15.00
 405 RE static r-anchored match                  1.88     1.80     5.00     4.00     2.00     3.00
 406 RE static r-anchored nomatch                1.91     1.86     4.00     4.00     2.00     3.00
 407 RE static short match                       1.85     1.78     5.00     4.00     2.00     3.00
 408 RE static short nomatch                     1.80     1.76     3.00     3.00     2.00     2.00
 409 RE var ***= directive match                 2.59     8.05     7.00     7.00      ERR      ERR
 410 RE var ***= directive nomatch               2.47     8.60     7.00     7.00      ERR      ERR
 411 RE var . match                              2.46     4.38     4.00     4.00     2.00     6.00
 412 RE var ^$ nomatch                           2.56     3.64     3.00     3.00     3.00     7.00
 413 RE var-based regexp                         7.63     8.47     7.00     8.00     6.00     7.00
 414 READ 595K, cat                          53170.13 55825.27 99787.00 82661.00 38107.00 53227.00
 415 READ 595K, gets                         33694.90 37554.27 77847.00 63122.00 31884.00 51077.00
 416 READ 595K, glob-grep match              49578.47 52889.43 90484.00 85732.00 46131.00 78990.00
 417 READ 595K, glob-grep nomatch            46407.23 50023.17 113538.0 106475.0 54382.00 76533.00
 418 READ 595K, read                          8602.20  8675.07 19085.00 18874.00 132133.0 138056.0
 419 READ 595K, read & size                   8675.33  8662.17 18997.00 18985.00  7022.00 138534.0
 420 READ 595K, read dyn buf                  8909.00  8791.47 19218.00     8.3+     8.3+     8.3+
 421 READ 595K, read small buf               76152.30 74802.17 83964.00     8.3+     8.3+     8.3+
 422 READ 3050b, cat                           334.86   368.88   560.00   510.00   238.00   330.00
 423 READ 3050b, gets                          189.28   202.76   394.00   335.00   186.00   285.00
 424 READ 3050b, glob-grep match               272.68   356.04   499.00   452.00   256.00   425.00
 425 READ 3050b, glob-grep nomatch             262.66   294.86   582.00   556.00   293.00   415.00
 426 READ 3050b, read                           62.28    60.22    98.00    96.00    45.00    70.00
 427 READ 3050b, read & size                    70.16    65.64   106.00   106.00    49.00    73.00
 428 READ 3050b, read dyn buf                   72.34    71.76   117.00     8.3+     8.3+     8.3+
 429 READ 3050b, read small buf                404.48   416.42   461.00     8.3+     8.3+     8.3+
 430 READ bin 595K, cat                      35934.90 68379.43 96929.00 85162.00 37829.00 53231.00
 431 READ bin 595K, gets                     21240.33 40429.87 77099.00 61756.00 31381.00 50773.00
 432 READ bin 595K, glob-grep match          25940.47 57414.20 90345.00 84043.00 46244.00 78516.00
 433 READ bin 595K, glob-grep nomatch        26515.27 53671.90 111894.0 105172.0 54050.00 76298.00
 434 READ bin 595K, read                      2520.03  5275.17  5244.00  5212.00 132194.0 138144.0
 435 READ bin 595K, read & size               2535.83  5286.40  5260.00  5258.00  7029.00 138003.0
 436 READ bin 595K, read dyn buf              2599.67  5189.50  5232.00     8.3+     8.3+     8.3+
 437 READ bin 595K, read small buf           58434.20 60374.40 59931.00     8.3+     8.3+     8.3+
 438 READ bin 3050b, cat                       270.92   451.74   627.00   524.00   238.00   324.00
 439 READ bin 3050b, gets                      144.06   239.74   418.00   354.00   188.00   287.00
 440 READ bin 3050b, glob-grep match           260.00   338.54   491.00   483.00   275.00   424.00
 441 READ bin 3050b, glob-grep nomatch         247.16   332.22   601.00   584.00   300.00   413.00
 442 READ bin 3050b, read                       38.32    39.98    44.00    43.00    51.00    71.00
 443 READ bin 3050b, read & size                45.86    50.64    47.00    49.00    55.00    79.00
 444 READ bin 3050b, read dyn buf               52.74    51.04    48.00     8.3+     8.3+     8.3+
 445 READ bin 3050b, read small buf            349.14   348.60   349.00     8.3+     8.3+     8.3+
 446 SHA (A) msg len 10                        591.38   698.65   900.00   851.00      -=-      -=-
 447 SHA (A) msg len 100                      1086.05  1271.47  1656.00  1550.00      -=-      -=-
 448 SHA (A) msg len 1000                     7813.95  9369.40 12376.00 11622.00      -=-      -=-
 449 SHA (A) msg len 10000                   74570.30 89961.70 117769.0 110755.0      -=-      -=-
 450 SHA (B) msg len 10                           -=-   635.91   850.00   807.00      -=-      -=-
 451 SHA (B) msg len 100                          -=-  1136.33  1549.00  1485.00      -=-      -=-
 452 SHA (B) msg len 1000                         -=-  8333.75 11358.00 10988.00      -=-      -=-
 453 SHA (B) msg len 10000                        -=- 79133.80 109731.0 106398.0      -=-      -=-
 454 SPLIT iter, 4000 uchars                  2044.47  1466.23  2002.00  3098.00  2834.00  4059.00
 455 SPLIT iter, 4010 chars                   2064.82  1404.95  1945.00  3193.00  2811.00  4032.00
 456 SPLIT iter, rand 100 c                     92.98    89.06   124.00    88.00    68.00      -=-
 457 SPLIT iter, rand 1000 c                   631.35   575.74   751.00   872.00   711.00      -=-
 458 SPLIT iter, rand 10000 c                 4855.70  3982.76  6073.00  9023.00  7286.00      -=-
 459 SPLIT on 'c', 4000 uchars                  89.77    77.68   204.00   257.00    94.00   361.00
 460 SPLIT on 'c', 4010 chars                   91.16    75.28   193.00   232.00    98.00   323.00
 461 SPLIT on 'cz', 4000 uchars                226.05   220.43   360.00   450.00   182.00   441.00
 462 SPLIT on 'cz', 4010 chars                 208.25   202.65   360.00   426.00   180.00   424.00
 463 SPLIT on 'cû', 4000 uchars                257.97   258.76   368.00   446.00   183.00   448.00
 464 SPLIT on 'cû', 4010 chars                 175.97   174.97   288.00   344.00   104.00   322.00
 465 SPLIT, 4000 uchars                        540.39   481.25   492.00  1584.00  1318.00   378.00
 466 SPLIT, 4010 chars                         605.26   419.62   461.00  1580.00  1324.00   369.00
 467 SPLIT, rand 100 c                          58.50    81.46    83.00    42.00    31.00      -=-
 468 SPLIT, rand 1000 c                        327.53   315.64   321.00   410.00   325.00      -=-
 469 SPLIT, rand 10000 c                      1495.06  1447.98  1476.00  4490.00  3561.00      -=-
 470 STR append                                 12.32    13.55    17.00    15.00    14.00    64.00
 471 STR append (1KB + 1KB)                      6.05     6.51    10.00     9.00     7.00    37.00
 472 STR append (1MB + (1b + 1K + 1b) * 100)  3393.11  3427.30  6369.00  6389.00  6312.00 27949.00
 473 STR append (1MB + 1KB * 20)              3030.03  3021.99  6012.00  5984.00  5958.00 28021.00
 474 STR append (1MB + 1KB * 1000)            6059.09  6087.93  9863.00  9769.00  9640.00 37824.00
 475 STR append (1MB + 1KB)                   2962.71  2966.66  5945.00  5962.00  5889.00 27190.00
 476 STR append (1MB + 1MB * 3)              11626.66 11648.94 14607.00 14627.00 14543.00 72023.00
 477 STR append (1MB + 1MB * 5)              14576.30 14594.32 29169.00 29216.00 29099.00 99098.00
 478 STR append (1MB + 2b * 1000)             3395.62  3425.70  7161.00  7071.00  7006.00 27445.00
 479 STR append (10KB + 1KB)                    10.83    10.97    13.00    13.00    10.00   154.00
 480 STR first (failure)                        14.03    15.42    13.00    13.00    12.00    50.00
 481 STR first (failure) utf                    13.78    14.34    57.00    56.00    12.00    48.00
 482 STR first (success)                         2.78     3.07     4.00     3.00     2.00    32.00
 483 STR first (success) utf                     2.74     3.08     4.00     3.00     2.00    32.00
 484 STR first (total failure)                  11.22    12.16     6.00     4.00     4.00    43.00
 485 STR first (total failure) utf              11.34    11.53     7.00     5.00     4.00    46.00
 486 STR index 0                                 2.99     2.78     3.00     3.00     2.00    35.00
 487 STR index 100                               2.84     2.83     3.00     3.00     2.00    39.00
 488 STR index 500                               3.07     2.76     3.00     3.00     2.00    37.00
 489 STR info locals match                     125.96   136.26   145.00   139.00   119.00   477.00
 490 STR last (failure)                         24.84    25.19    23.00    23.00    16.00    50.00
 491 STR last (success)                          2.88     3.21    54.00    54.00     2.00    53.00
 492 STR last (total failure)                   17.27    17.28    15.00    15.00     8.00    46.00
 493 STR length (==4010)                         2.15     2.26     2.00     2.00     2.00    36.00
 494 STR length growing (1000)                 385.90   397.64   974.00   992.00   955.00  2428.00
 495 STR length growing uc (1000)              384.00   392.21  1002.00   987.00   890.00  2427.00
 496 STR length of a LIST                        1.98     2.16     2.00     2.00     2.00    31.00
 497 STR length static str                       1.64     1.63     2.00     2.00     2.00     5.00
 498 STR match, complex (failure 2)          29289.15 31813.10 360045.0 360449.0 117091.0 117844.0
 499 STR match, complex (failure)               19.17    19.56   210.00   209.00    69.00   103.00
 500 STR match, complex (success early)          2.45     2.70     4.00     4.00     2.00    33.00
 501 STR match, complex (success late)          26.62    26.72   216.00   216.00    75.00   108.00
 502 STR match, complex (total failure)         13.44    14.08   202.00   202.00    68.00   102.00
 503 STR match, exact (failure)                  1.60     1.64     2.00     2.00     1.00     2.00
 504 STR match, exact (success)                  1.65     1.60     2.00     2.00     1.00     2.00
 505 STR match, exact -nocase (failure)          1.73     1.76     2.00     2.00     2.00     3.00
 506 STR match, exact -nocase (success)          2.61     2.87     3.00     3.00     2.00     3.00
 507 STR match, simple (failure)                 1.80     1.77     2.00     2.00     1.00     3.00
 508 STR match, simple (success)                 1.74     1.94     2.00     2.00     1.00     3.00
 509 STR range, index 100..200 of 4010           3.55     3.93     3.00     3.00     2.00    41.00
 510 STR repeat, 4010 chars * 10                34.35    34.72    34.00    49.00    56.00   372.00
 511 STR repeat, 4010 chars * 100             1005.48  1011.48  1023.00  2118.00  2257.00  9982.00
 512 STR repeat, abcdefghij * 10                 3.42     3.49     3.00     4.00    14.00    41.00
 513 STR repeat, abcdefghij * 100                9.49     9.48     9.00    17.00   113.00   342.00
 514 STR repeat, abcdefghij * 1000              70.73    71.26    92.00   123.00  1073.00  3362.00
 515 STR replace, equal replacement             12.37    12.81    60.00    61.00    12.00    83.00
 516 STR replace, longer replacement            12.02    12.91    60.00    59.00    11.00    77.00
 517 STR replace, no replacement                10.95    11.31    61.00    60.00    12.00    83.00
 518 STR reverse iter/append, 10 c              11.48    12.68    23.00    22.00    18.00    42.00
 519 STR reverse iter/append, 10 uc             11.61    11.79    23.00    22.00    18.00    42.00
 520 STR reverse iter/append, 100 c             86.93    88.38   186.00   185.00   151.00   392.00
 521 STR reverse iter/append, 100 uc            86.72    90.43   189.00   187.00   151.00   395.00
 522 STR reverse iter/append, 400 c            312.94   316.18   726.00   713.00   603.00  2112.00
 523 STR reverse iter/append, 400 uc           341.06   368.77   730.00   709.00   596.00  2089.00
 524 STR reverse iter/set, 10 c                 12.71    14.36    20.00    19.00    15.00    45.00
 525 STR reverse iter/set, 10 uc                13.06    14.25    19.00    19.00    16.00    44.00
 526 STR reverse iter/set, 100 c               115.58   137.39   186.00   179.00   141.00   447.00
 527 STR reverse iter/set, 100 uc              124.11   151.33   186.00   176.00   139.00   449.00
 528 STR reverse iter/set, 400 c               557.91   612.91   845.00   774.00   666.00  2668.00
 529 STR reverse iter/set, 400 uc              587.07   632.23   827.00   799.00   667.00  2559.00
 530 STR reverse recursive, 10 c                36.59    40.46    45.00    44.00    35.00    81.00
 531 STR reverse recursive, 10 uc               35.77    39.32    45.00    44.00    35.00    81.00
 532 STR reverse recursive, 100 c              413.88   463.42   522.00   498.00   378.00   904.00
 533 STR reverse recursive, 100 uc             418.62   456.86   827.00   665.00   377.00   931.00
 534 STR reverse recursive, 400 c             2598.42  2712.32  3053.00  2966.00  2518.00     8.0+
 535 STR reverse recursive, 400 uc            2609.59  2886.08  6511.00  5926.00  2511.00     8.0+
 536 STR str $a eq $b                            3.10     3.39     5.00     5.00     5.00    15.00
 537 STR str $a eq $b (same obj)                 3.10     3.42     5.00     5.00     5.00    15.00
 538 STR str $a equal ""                         2.25     2.46     4.00     4.00     3.00    14.00
 539 STR str $a ne $b                            3.28     4.05     6.00     5.00     5.00    14.00
 540 STR str $a ne $b (same obj)                 3.14     3.35     5.00     5.00     5.00    14.00
 541 STR str num == ""                           2.69     2.65     3.00     3.00     3.00    14.00
 542 STR string compare                          3.05     3.56     5.00     4.00     4.00     6.00
 543 STR string compare ""                       3.24     3.23     5.00     4.00     4.00    12.00
 544 STR string compare long                    38.38    38.15    39.00    39.00    38.00   170.00
 545 STR string compare long (same obj)          2.92     3.52    39.00    39.00    38.00   171.00
 546 STR string compare mixed long              60.26    63.85    47.00    44.00    43.00   166.00
 547 STR string compare uni long                44.23    46.51    44.00    45.00    38.00   165.00
 548 STR string equal ""                         2.57     3.12     4.00     4.00     4.00    12.00
 549 STR string equal long (!= len)              8.07     8.66    45.00    44.00    44.00   213.00
 550 STR string equal long (== len)             38.12    38.19    40.00    40.00    39.00   214.00
 551 STR string equal long (same obj)            3.19     3.51    40.00    39.00    39.00   216.00
 552 STR string equal mixed long                 3.38     3.61    40.00    40.00    39.00   209.00
 553 STR string equal uni long                  42.97    43.58    45.00    45.00    39.00   185.00
 554 STR/LIST length, obj shimmer              416.85   419.69   504.00   489.00     3.00   195.00
 555 SWITCH 1st true                             2.21     5.44     5.00     4.00     4.00    16.00
 556 SWITCH 2nd true                             2.03     5.65     5.00     4.00     4.00    16.00
 557 SWITCH 9th true                             2.00     5.93     5.00     5.00     4.00    16.00
 558 SWITCH default true                         1.97     6.14     6.00     5.00     5.00    16.00
 559 TRACE all set (rwu)                         3.93     5.16     4.00     3.00     3.00     6.00
 560 TRACE no trace set                          5.18     4.91     5.00     4.00     4.00     6.00
 561 TRACE read                                  3.82     6.20     4.00     3.00     3.00     7.00
 562 TRACE unset                                 4.04     5.06     4.00     3.00     3.00     6.00
 563 TRACE write                                 3.97     5.26     4.00     4.00     4.00     6.00
 564 UNSET catch var !exist                     16.43    10.16     8.00     9.00     6.00     6.00
 565 UNSET catch var exists                      2.14     3.61     4.00     2.00     2.00     3.00
 566 UNSET info check var !exist                 1.80     2.44     2.00     2.00     2.00     3.00
 567 UNSET info check var exists                 2.13     3.42     2.00     2.00     2.00     4.00
 568 UNSET nocomplain var !exist                 2.13     2.63     8.00     8.00     6.00     6.00
 569 UNSET nocomplain var exists                 2.16     2.36     2.00     2.00     2.00     3.00
 570 UNSET var exists                            3.39     2.21     2.00     2.00     1.00     2.00
 571 VAR 'array set' of 100 elems               25.39    29.77    46.00    45.00    39.00    79.00
 572 VAR 100 'set's in array                    26.36    27.03    23.00    23.00    26.00    67.00
 573 VAR access global                           2.74     2.97     5.00     5.00     4.00     5.00
 574 VAR access local proc arg                   3.24     2.17     2.00     2.00     2.00     6.00
 575 VAR access locally set                      1.97     2.81     2.00     2.00     2.00     5.00
 576 VAR access upvar                            2.56     3.14     4.00     4.00     4.00     6.00
 577 VAR incr global var 1000x                 472.45   415.65   692.00   643.00   697.00  3791.00
 578 VAR incr local var 1000x                  473.82   403.97   686.00   665.00   703.00  3800.00
 579 VAR incr upvar var 1000x                  474.03   425.56   673.00   655.00   705.00  3727.00
 580 VAR mset                                    3.07     4.12     6.00     5.00     5.00    17.00
 581 VAR mset (foreach)                          2.57     2.79     3.00     2.00     2.00     8.00
 582 VAR ref absolute                          116.55    75.62   108.00   111.00    84.00     8.0+
 583 VAR ref local                               9.68    13.60    22.00    23.00    22.00     8.0+
 584 VAR ref variable                           11.18    14.27    52.00    54.00    47.00     8.0+
 585 VAR set array element                       2.35     2.93     2.00     2.00     2.00     3.00
 586 VAR set scalar                              1.60     1.68     1.00     1.00     1.00     2.00
 587 WORDCOUNT wc1                             806.47   881.24   906.00   854.00   344.00   479.00
 588 WORDCOUNT wc2                             191.18   198.22   501.00   509.00   224.00   303.00
 589 WORDCOUNT wc3                             179.01   184.65   472.00   483.00   203.00   222.00
 589 BENCHMARKS                              1:8.5b2.1 2:8.4.17  3:8.3.5  4:8.2.3  5:8.0.5  6:7.6p2
 FINISHED 2007-11-16 11:43:32

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