X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=benchmark.pl;h=98763859e8375967f30bad5f89cc208b079db2ba;hb=3ce69e84cad15844282d691fa03e711c5353c05e;hp=131faafb25f91052db46ecf6b3fa1c8f1cae9b42;hpb=120f6de605b9a431e3b084bfc34d7cf33b6c9905;p=sgt-puzzles.git diff --git a/benchmark.pl b/benchmark.pl index 131faaf..9876385 100755 --- a/benchmark.pl +++ b/benchmark.pl @@ -1,5 +1,7 @@ #!/usr/bin/perl +# Process the raw output from benchmark.sh into Javascript-ified HTML. + use strict; use warnings; @@ -123,20 +125,62 @@ function initPlots() { ctx.stroke(); } } + document.getElementById('sort_orig').onclick = function() { + sort(function(e) { + return parseFloat(e.getAttribute("data-index")); + }); + }; + document.getElementById('sort_median').onclick = function() { + sort(function(e) { + return -parseFloat(e.getAttribute("data-median")); + }); + }; + document.getElementById('sort_mean').onclick = function() { + sort(function(e) { + return -parseFloat(e.getAttribute("data-mean")); + }); + }; +} +function sort(keyfn) { + var rows = document.getElementsByTagName("tr"); + var trs = []; + for (var i = 0; i < rows.length; i++) + trs.push(rows[i]); + trs.sort(function(a,b) { + var akey = keyfn(a); + var bkey = keyfn(b); + return akey < bkey ? -1 : akey > bkey ? +1 : 0; + }); + var parent = trs[0].parentElement; + for (var i = 0; i < trs.length; i++) + parent.removeChild(trs[i]); + for (var i = 0; i < trs.length; i++) + parent.appendChild(trs[i]); } //]]>

Puzzle generation-time benchmarks

+

Sort order: + + + EOF +my $index = 0; for my $preset (@presets) { - print "\n"; + $index++; } print <
Preset
", &escape($preset), " $b } @{$presets{$preset}}; + my @data = sort { $a <=> $b } @{$presets{$preset}}; + my $median = ($#data % 2 ? + ($data[($#data-1)/2]+$data[($#data+1)/2])/2 : + $data[$#data/2]); + my $mean = 0; map { $mean += $_ } @data; $mean /= @data; + print "
", &escape($preset), "