| Index: third_party/re2/benchlog/mktable
|
| diff --git a/third_party/re2/benchlog/mktable b/third_party/re2/benchlog/mktable
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..da0659820c8d9a8aadf4ffe1d04ec0f8bb2c6bad
|
| --- /dev/null
|
| +++ b/third_party/re2/benchlog/mktable
|
| @@ -0,0 +1,155 @@
|
| +#!/usr/bin/perl
|
| +# XXX
|
| +
|
| +sub table() {
|
| + my ($name) = @_;
|
| + print <<'EOF';
|
| +<table border=0>
|
| +<tr><th>System</th><th>PCRE</th><th>RE2</th></tr>
|
| +EOF
|
| + foreach my $sys (@sys) {
|
| + my $ns_pcre = $data{$sys}->{sprintf($name, "PCRE")}->{'ns/op'};
|
| + my $ns_re2 = $data{$sys}->{sprintf($name, "RE2")}->{'ns/op'};
|
| + printf "<tr><td>%s</td><td>%.1f µs</td><td>%.1f µs</td></tr>\n", $sysname{$sys}, $ns_pcre/1000., $ns_re2/1000.;
|
| + }
|
| + print <<'EOF';
|
| +<tr height=5><td colspan=3></td></tr>
|
| +</table>
|
| +EOF
|
| +}
|
| +
|
| +@sizes = (
|
| + "8", "16", "32", "64", "128", "256", "512",
|
| + "1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K",
|
| + "1M", "2M", "4M", "8M", "16M"
|
| +);
|
| +
|
| +%color = (
|
| + "PCRE" => "0.7 0 0",
|
| + "RE2" => "0 0 1",
|
| +);
|
| +
|
| +$ngraph = 0;
|
| +
|
| +sub graph() {
|
| + my ($name) = @_;
|
| +
|
| + my $sys = "wreck";
|
| + my $base = sprintf("regexp3g%d", ++$ngraph);
|
| +
|
| + open(JGR, ">$base.jgr") || die "open >$base.jgr: $!";
|
| + printf JGR "bbox -20 -12 392 95\n";
|
| + printf JGR "newgraph clip x_translate 0.25 y_translate 0.25\n";
|
| + $ymax = 0;
|
| + %lastx = ();
|
| + %lasty = ();
|
| + foreach my $who ("PCRE", "RE2") {
|
| + printf JGR "newcurve pts\n";
|
| + for(my $i=0; $i<@sizes; $i++) {
|
| + my $key = sprintf("%s%s/%s", $name, $who, $sizes[$i]);
|
| + my $val = $data{$sys}->{$key}->{'MB/s'};
|
| + next if !defined($val);
|
| + if($val > $ymax) {
|
| + $ymax = $val;
|
| + }
|
| + $lastx{$who} = $i;
|
| + $lasty{$who} = $val;
|
| + printf JGR "$i %f (* %s *)\n", $val, $key;
|
| + }
|
| + my $color = $color{$who};
|
| + printf JGR "marktype none color $color linethickness 2 linetype solid label : $who\n";
|
| + }
|
| + my $n = @sizes;
|
| + printf JGR "xaxis min -1 max $n size 5 label : text size (bytes)\n";
|
| + printf JGR " no_auto_hash_marks hash_labels fontsize 9\n";
|
| + for($i=0; $i<@sizes; $i+=3) {
|
| + printf JGR " hash_at $i hash_label at $i : $sizes[$i]\n";
|
| + }
|
| + my $y = 1;
|
| + while(10*$y <= $ymax) {
|
| + $y = 10*$y;
|
| + }
|
| + for($i=2; $i<=10; $i++) {
|
| + if($i*$y > $ymax) {
|
| + $y = $i*$y;
|
| + last;
|
| + }
|
| + }
|
| + foreach my $who ("PCRE", "RE2") {
|
| + $x1 = $lastx{$who};
|
| + $y1 = $lasty{$who};
|
| + $x1 *= 1.01;
|
| + my $v = "vjc";
|
| + if($y1 < 0.05 * $y) {
|
| + $v = "vjb";
|
| + $y1 = 0.05 * $y;
|
| + }
|
| + printf JGR "newstring x $x1 y $y1 hjl $v : $who\n";
|
| + }
|
| + printf JGR "yaxis min 0 max $y size 1 label : speed (MB/s)\n";
|
| + printf JGR " hash_labels fontsize 9\n";
|
| + # printf JGR "legend defaults font Times-Roman fontsize 10 x 0 y $y hjl vjt\n";
|
| +
|
| + system("jgraph $base.jgr >$base.eps"); # die "system: $!";
|
| + system("gs -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dEPSCrop -sDEVICE=png16m -r100 -sOutputFile=$base.png -dBATCH -dQUIT -dQUIET -dNOPAUSE $base.eps");
|
| +
|
| + printf "<img src=$base.png>\n"
|
| +
|
| +}
|
| +
|
| +sub skip() {
|
| + while(<>) {
|
| + if(/^<!-- -->/) {
|
| + print;
|
| + last;
|
| + }
|
| + }
|
| +}
|
| +
|
| +@sys = ("r70", "c2", "wreck", "mini");
|
| +%sysname = (
|
| + "r70" => "AMD Opteron 8214 HE, 2.2 GHz",
|
| + "c2" => "Intel Core2 Duo E7200, 2.53 GHz",
|
| + "wreck" => "Intel Xeon 5150, 2.66 GHz (Mac Pro)",
|
| + "mini" => "Intel Core2 T5600, 1.83 GHz (Mac Mini)",
|
| +);
|
| +
|
| +%func = (
|
| + "table" => \&table,
|
| + "graph" => \&graph,
|
| +
|
| +);
|
| +
|
| +foreach my $sys (@sys) {
|
| + open(F, "benchlog.$sys") || die "open benchlog.$sys: $!";
|
| + my %sysdat;
|
| + while(<F>) {
|
| + if(/^([A-Za-z0-9_\/]+)\s+(\d+)\s+(\d+) ns\/op/) {
|
| + my %row;
|
| + $row{"name"} = $1;
|
| + $row{"iter"} = $2;
|
| + $row{"ns/op"} = $3;
|
| + if(/([\d.]+) MB\/s/){
|
| + $row{"MB/s"} = $1;
|
| + }
|
| + $sysdat{$row{"name"}} = \%row;
|
| + }
|
| + }
|
| + close F;
|
| + $data{$sys} = \%sysdat;
|
| +}
|
| +
|
| +while(<>) {
|
| + print;
|
| + if(/^<!-- benchlog (\w+) -->/) {
|
| + $func{$1}();
|
| + skip();
|
| + next;
|
| + }
|
| + if(/^<!-- benchlog (\w+) ([%\w]+) -->/) {
|
| + $func{$1}($2);
|
| + skip();
|
| + next;
|
| + }
|
| +}
|
| +
|
|
|