diff --git a/doc/benchmark_results2.org b/doc/benchmark_results2.org index 33fcc7e..5e99e31 100644 --- a/doc/benchmark_results2.org +++ b/doc/benchmark_results2.org @@ -1,47 +1,47 @@ -| benchmark | hawk | chez | diff | win | reason | loop trace | -|-----------+--------+---------+-------------+-------+-------------------------------------------------+------------| -| ack | 2.13 | 1.9 | 10.798122 | | | x | -| tak | 1.26 | 1.56 | -23.809524 | *WIN* | | x | -| fib | 2.29 | 3.0 | -31.004367 | *WIN* | | | -| sum | .89 | 1.546 | -73.707865 | *WIN* | | x | -| diviter | 1.034 | 1.041 | -0.67698259 | *WIN* | alloc inline, fusion | x | -| divrec | 1.593 | 1.636 | -2.6993095 | *WIN* | same | x | -| nqueens | 2.94 | 3.8 | -29.251701 | *WIN* | closure analysis | x | -| mperm | 5.168 | 7.2 | -39.318885 | *WIN* | | | -| ntakl | 1.733 | 2.6 | -50.028852 | *WIN* | FRONTEND | x | -| takl | 1.288 | 2.7 | -109.62733 | *WIN* | same | x | -| wc | .648 | .902 | 30.077519 | | getc, print_obj, fputc, plt, call constant pool | x | -| cat | 1.37 | 1.278 | 24.823529 | | same as wc | x | -| cpstak | 1.962 | 2.1 | -7.0336391 | *WIN* | typecheck | | -| primes | .5 | .6999 | -39.98 | *WIN* | | x | -| deriv | .89 | .908 | -2.0224719 | *WIN* | merge GC, lea fusion, typechecks, snapshot min | | -| triangl | .728 | 1.184 | -62.637363 | *WIN* | | x | -| destruc | 1.02 | 1.28 | -25.490196 | *WIN* | | x | -| gcbench | .49 | .556 | -13.469388 | *WIN* | bigger nursury | | -| puzzle | 1.286 | 1.55 | -20.528771 | *WIN* | loop opt | x | -| paraffins | 4.0 | 4.270 | -6.75 | *WIN* | | x | -| maze | .40 | .845 | -111.25 | *WIN* | | x | -| mazefun | 1.904 | 1.731 | 9.0861345 | | | x | -| lattice | 2.7 | 2.7 | 0. | *WIN* | closure sinking, sccp | x | -| browse | .88 | .987 | -12.159091 | *WIN* | | | -| graphs | 1.75 | 1.3 | 25.714286 | | LOOP, closure analysis , closure sinking | nested | -| conform | 1.80 | 1.422 | 21. | | | | -| sboyer | .756 | .731 | 3.3068783 | | ?? typecheck | | -| nboyer | 1.376 | 1.483 | -7.7761628 | *WIN* | ?? | | -| array1 | 2.0 | 4.5 | -125. | *WIN* | | x | -| earley | 1.99 | 3.1 | -55.778894 | *WIN* | | x | -| scheme | 1.39 | 2.4 | -72.661871 | *WIN* | | x | -| ctak | 3.45 | .4 | 88.405797 | | cc representation | x | -| fibc | 1.639 | .328 | 79.987797 | | cc representation | x | -| string | .5 | 2.5 | -400. | *WIN* | string ops | | -| read1 | .781 | 0.574 | 42.6 | | read | | -| parsing | 2.0 | 2.1 | -5. | *WIN* | sccp | | -| peval | 1.475 | 1.46 | 1.0169492 | | loop catching. sccp | | -| slatex | 1.98 | 1.958 | 1.1111111 | | | | -| equal | .200 | .398 | -99. | *WIN* | | | -| compiler | 1.918 | 2.004 | -4.4838373 | *WIN* | loop catching | | -| matrix | 1.11 | .899 | 19.009009 | | loop catching?? opt_loop | | -| dynamic | 1.832 | 1.447 | 21.015284 | | read | | -| TOTAL | 68.242 | 76.9779 | -12.801354 | *WIN* | | | -|-----------+--------+---------+-------------+-------+-------------------------------------------------+------------| -#+TBLFM: $4=($2-$3) * 100.0 /$2::$5='(if (not (= $2 0)) (if (>= $3 $2) '*WIN* "") "BAD");N::@>$2=vsum(@2..@-1)::@>$3=vsum(@2..@-1) +| benchmark | hawk | chez | diff | win | reason | loop trace | +|-----------+-------+---------+-------------+-------+-------------------------------------------------------+------------| +| ack | 1.87 | 1.9 | -1.6042781 | *WIN* | | x | +| tak | 1.26 | 1.56 | -23.809524 | *WIN* | | x | +| fib | 2.29 | 3.0 | -31.004367 | *WIN* | | | +| sum | .89 | 1.546 | -73.707865 | *WIN* | | x | +| diviter | 1.034 | 1.041 | -0.67698259 | *WIN* | | x | +| divrec | 1.593 | 1.636 | -2.6993095 | *WIN* | | x | +| nqueens | 2.94 | 3.8 | -29.251701 | *WIN* | | x | +| mperm | 5.168 | 7.2 | -39.318885 | *WIN* | | | +| ntakl | 1.733 | 2.6 | -50.028852 | *WIN* | | x | +| takl | 1.96 | 2.7 | -37.755102 | *WIN* | | x | +| wc | .537 | .902 | -67.970205 | *WIN* | | x | +| cat | 1.268 | 1.278 | -0.78864353 | *WIN* | write fastpath | x | +| cpstak | 1.962 | 2.1 | -7.0336391 | *WIN* | | | +| primes | .5 | .6999 | -39.98 | *WIN* | | x | +| deriv | .89 | .908 | -2.0224719 | *WIN* | | | +| triangl | .728 | 1.184 | -62.637363 | *WIN* | | x | +| destruc | 1.02 | 1.28 | -25.490196 | *WIN* | | x | +| gcbench | .388 | .556 | -43.298969 | *WIN* | | | +| puzzle | 1.286 | 1.55 | -20.528771 | *WIN* | | x | +| paraffins | 3.9 | 4.270 | -9.4871795 | *WIN* | | x | +| maze | .40 | .845 | -111.25 | *WIN* | | x | +| mazefun | 1.693 | 1.731 | -2.2445363 | *WIN* | | x | +| lattice | 2.5 | 2.7 | -8. | *WIN* | | x | +| browse | .80 | .987 | -23.375 | *WIN* | | | +| graphs | 1.712 | 1.3 | 24.065421 | | 'program' mode in chez. DEFINITELY opt_loop SLOADS | nested | +| conform | 1.675 | 1.422 | 15.104478 | | program mode. specializing on lambda args? fix spills | | +| sboyer | .721 | .731 | -1.3869626 | *WIN* | spills | | +| nboyer | 1.440 | 1.483 | -2.9861111 | *WIN* | | | +| array1 | 2.0 | 4.5 | -125. | *WIN* | | x | +| earley | 2.15 | 3.1 | -44.186047 | *WIN* | | x | +| scheme | 1.39 | 2.4 | -72.661871 | *WIN* | | x | +| ctak | 4.5 | .4 | 91.111111 | | cc representation | x | +| fibc | 1.639 | .328 | 79.987797 | | cc representation | x | +| string | .5 | 2.5 | -400. | *WIN* | | | +| read1 | .544 | 0.574 | -5.5147059 | *WIN* | | | +| parsing | 1.96 | 2.1 | -7.1428571 | *WIN* | | | +| peval | 1.483 | 1.51 | -1.8206339 | *WIN* | fix spill slots | | +| slatex | 1.787 | 1.958 | -9.5691102 | *WIN* | file jitops | | +| equal | .200 | .398 | -99. | *WIN* | | | +| compiler | 1.579 | 2.004 | -26.915769 | *WIN* | | | +| matrix | 1.11 | 1.11 | 0. | *WIN* | loop catching?? opt_loop | | +| dynamic | 1.54 | 1.447 | 6.0389610 | OK | read | | +| TOTAL | 66.54 | 77.2389 | -16.078900 | *WIN* | | | +|-----------+-------+---------+-------------+-------+-------------------------------------------------------+------------| +#+TBLFM: $4=($2-$3) * 100.0 /$2::$5='(if (not (= $2 0)) (if (>= $3 $2) '*WIN* (if (>= (* 1.15 $3) $2) 'OK "")) "BAD");N::@>$2=vsum(@2..@-1)::@>$3=vsum(@2..@-1) diff --git a/docs/index.html b/docs/index.html index c1ec01c..b142834 100644 --- a/docs/index.html +++ b/docs/index.html @@ -105,7 +105,7 @@

Benchmarks

- Hawk has an unoptimized read/write path, and unoptimized continuation representation. + Hawk has an unoptimized continuation representation.
Hawk JIT does not currently support flonums, so all flonums benchmarks mostly use the VM.
@@ -186,51 +186,55 @@

Benchmarks

} arrayLabel = ['Chez', 'Loko', 'Gambit', 'Hawk']; makechart('destruc', [1.2800000000002, 1.1779999732971191, 1.529525, 1.08]); - makechart('conform', [1.3599999999996726, 1.2949999570846558, 2.161752, 1.89]); + makechart('conform', [1.3599999999996726, 1.2949999570846558, 2.161752, 1.675]); makechart('puzzle', [1.6299999999996544, 1.5299999713897705, 2.193014, 1.32]); - makechart('parsing', [2.0299999999997453, 1.8980000019073486, 1.837709, 1.9]); + makechart('parsing', [2.0299999999997453, 1.8980000019073486, 1.837709, 1.96]); makechart('nqueens', [3.519999999999982, 4.40500020980835, 4.38331, 2.83]); makechart('primes', [0.650000000000091, 0.75, 0.577724, 0.55]); makechart('tak', [1.1199999999998909, 1.1089999675750732, 1.620081, 1.24]); makechart('triangl', [1.199999999999818, 0.9570000171661377, 1.264036, 0.87]); makechart('matrix', [1.32, 1.2879999876022339, 1.603249, 1.11]); - makechart('lattice', [2.6600000000003092, 2.4709999561309814, 4.184831, 2.66]); - makechart('browse', [0.9500000000002728, 1.1690000295639038, 1.476638, .92]); + makechart('lattice', [2.6600000000003092, 2.4709999561309814, 4.184831, 2.5]); + makechart('browse', [0.9500000000002728, 1.1690000295639038, 1.476638, .8]); makechart('sum', [1.6199999999998909, 1.6970000267028809, 1.363083, 0.86]); - makechart('nboyer', [1.3900000000003274, 1.2589999437332153, 2.450626, 1.376]); - makechart('gcbench', [0.5399999999999636, 0.5889999866485596, 1.04997, 0.42]); + makechart('nboyer', [1.3900000000003274, 1.2589999437332153, 2.450626, 1.44]); + makechart('gcbench', [0.5399999999999636, 0.5889999866485596, 1.04997, 0.38]); makechart('fib', [2.980000000000018, 2.680999994277954, 2.147171, 2.34]); makechart('cpstak', [2.130000000000109, 3.247999906539917, 2.585882, 1.81]); makechart('maze', [.437, 1.062000036239624, 0.448774, 0.42]); - makechart('takl', [2.7899999999999636, 1.5609999895095825, 1.751044, 1.69]); + makechart('takl', [2.7899999999999636, 1.5609999895095825, 1.751044, 1.98]); makechart('deriv', [0.8800000000001091, 1.7610000371932983, 0.939768, 0.89]); makechart('ntakl', [2.6599999999998545, 1.5379999876022339, 1.935883, 1.78]); - makechart('slatex', [1.849999999999909, 1.840999960899353, 3.885483, 1.91]); - makechart('compiler', [2.2, 1.059000015258789, 0.0, 1.9]); - makechart('sboyer', [0.7400000000002365, 0.6370000243186951, 1.000899, .76]); + makechart('slatex', [1.849999999999909, 1.840999960899353, 3.885483, 1.88]); + makechart('compiler', [2.2, 1.059000015258789, 0.0, 1.579]); + makechart('sboyer', [0.7400000000002365, 0.6370000243186951, 1.000899, .72]); makechart('scheme', [1.9800000000000182, 1.878999948501587, 4.262164, 1.39]); - makechart('earley', [2.9200000000000728, 0.0, 3.036918, 1.99]); + makechart('earley', [2.9200000000000728, 0.0, 3.036918, 2.15]); makechart('peval', [1.400000000000091, 1.8600000143051147, 1.82575, 1.47]); makechart('ack', [1.9100000000003092, 2.5290000438690186, 2.534312, 1.52]); - makechart('paraffins', [3.363, 1.2400000095367432, 2.397688, 4.0]); + makechart('paraffins', [3.363, 1.2400000095367432, 2.397688, 3.9]); makechart('diviter', [0.9800000000000182, 1.1749999523162842, 1.108788, 1.00]); makechart('equal', [0.3900000000003274, 1.5759999752044678, 0.234992, 0.2]); makechart('divrec', [1.6200000000, 1.9700000286102295, 1.559836, 1.59]); - makechart('graphs', [1.3099999999999454, 1.7000000476837158, 5.411687, 1.75]); + makechart('graphs', [1.3099999999999454, 1.7000000476837158, 5.411687, 1.71]); makechart('mperm', [6.8400000000001455, 4.39300012588501, 4.34869, 5.05]); - makechart('mazefun', [1.5799999999999272, 1.6059999465942383, 2.093023, 1.90]); + makechart('mazefun', [1.5799999999999272, 1.6059999465942383, 2.093023, 1.69]); makechart('array1', [4.5900000000001455, 1.4989999532699585, 2.981551, 2.00]); makechart('wc', [0.9400000000000546, 1.5779999494552612, 5.82148, .648]); makechart('string', [2.9100000000003092, 2.611999988555908, 1.703866, .5]); makechart('cat', [1.3100000000004002, 2.421999931335449, 10.767127, 1.371]); + makechart('dynamic', [1.3899999999998727, 2.3949999809265137, 3.172476, 1.55]); + makechart('tail', [0.0, 3.299999952316284, 2.195105, 0.24]); + makechart('read1', [0.5199999999999818, 1.9600000381469727, 1.245462, 0.592]); + oldsums = [...sums]; makechart('Totals', sums); + sums = oldsums; cur_section = "charts2"; - makechart('ctak', [0.41000000000030923, 16.945999145507812, 1.854662, 3.29]); + makechart('ctak', [0.41000000000030923, 16.945999145507812, 1.854662, 4.55]); makechart('fibc', [0.30999999999994543, 9.291000366210938, 1.176995, 1.58]); - makechart('dynamic', [1.3899999999998727, 2.3949999809265137, 3.172476, 1.83]); - makechart('tail', [0.0, 3.299999952316284, 2.195105, 0.24]); - makechart('read1', [0.5199999999999818, 1.9600000381469727, 1.245462, 0.781]); + oldsums = [...sums]; makechart('Totals', sums); + sums = oldsums; cur_section = "charts3"; makechart('sum1', [0.7400000000002365, 2.99, 0.762798, 1.79]); makechart('simplex', [1.6700000000000728, 1.3509999513626099, 1.532647, 9.44]);