diff options
| author | Steve Block <steveblock@google.com> | 2011-05-06 11:45:16 +0100 | 
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2011-05-12 13:44:10 +0100 | 
| commit | cad810f21b803229eb11403f9209855525a25d57 (patch) | |
| tree | 29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /PerformanceTests/SunSpider/sunspider-compare-results | |
| parent | 121b0cf4517156d0ac5111caf9830c51b69bae8f (diff) | |
| download | external_webkit-cad810f21b803229eb11403f9209855525a25d57.zip external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2  | |
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'PerformanceTests/SunSpider/sunspider-compare-results')
| -rwxr-xr-x | PerformanceTests/SunSpider/sunspider-compare-results | 161 | 
1 files changed, 161 insertions, 0 deletions
diff --git a/PerformanceTests/SunSpider/sunspider-compare-results b/PerformanceTests/SunSpider/sunspider-compare-results new file mode 100755 index 0000000..09b7052 --- /dev/null +++ b/PerformanceTests/SunSpider/sunspider-compare-results @@ -0,0 +1,161 @@ +#!/usr/bin/perl -w + +# Copyright (C) 2007 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +#    notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +#    notice, this list of conditions and the following disclaimer in the +#    documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  + +use strict; +use Getopt::Long; +use File::Basename; + +my $showHelp = 0; +my $jsShellPath; +my $suite = ""; +my $ubench = 0; +my $v8suite = 0; +my $parseOnly = 0; + +my $programName = basename($0); +my $usage = <<EOF; +Usage: $programName --shell=[path] [options] FILE FILE +  --help        Show this help message +  --shell       Path to javascript shell +  --suite           Select a specific benchmark suite. The default is sunspider-0.9.1 +  --ubench          Use microbenchmark suite instead of regular tests. Same as --suite=ubench +  --v8-suite        Use the V8 benchmark suite. Same as --suite=v8-v4 +  --parse-only  Compare the parse-only benchmark results +EOF + +GetOptions('shell=s' => \$jsShellPath, +           'suite=s' => \$suite, +           'ubench' => \$ubench, +           'v8-suite' => \$v8suite, +           'parse-only' => \$parseOnly, +           'help' => \$showHelp); + +$suite = "ubench" if ($ubench); +$suite = "v8-v4" if ($v8suite); +$suite = "parse-only" if ($parseOnly); +$suite = "sunspider-0.9.1" if (!$suite); + +my $resultDirectory = "${suite}-results"; + +if ((scalar @ARGV != 0 && scalar @ARGV != 2) || !$jsShellPath || $showHelp) { +   print STDERR $usage; +   exit 1; +} + +sub readResultsFile($) +{ +    my ($filename) = @_; +    open FILE, "<", $filename or die; +    my $foundStart = 0; +    my $foundOutput = 0; +    my $foundEnd = 0; +    my $result = ""; +    while (<FILE>) { +        if (!$foundStart) { +            if (/^\[\{$/) { +                $foundStart = 1; +                $result .= $_; +            } elsif (/^var \w+ = \[$/) { +                $foundOutput = 1; +            } elsif ($foundOutput && /^\{$/) { +                $foundOutput = 0; +                $foundStart = 1; +                $result = "[{\n"; +            } +        } else { +            if (/\];?$/) { +                $foundEnd = 1; +                chomp; +                s/;$//; +                $result .= $_; +                last; +            } else { +                $result .= $_; +            } +        }  +    } +    close FILE; + +    die "Cound not find data in ${filename} - needs to start with [{" unless $foundStart; +    die "Cound not find data in ${filename} - needs to end with }]" unless $foundEnd; + +    return $result; +} + +sub dumpToFile($$) +{ +    my ($contents, $path) = @_; +    open FILE, ">", $path or die; +    print FILE $contents; +    close FILE; +} + +sub readFile($) +{ +    my ($path) = @_; +    open FILE, "<", $path or die; +    my $result = <FILE>; +    close FILE; +    return $result; +} + +sub newestFile($$) +{ +    my ($dir, $pattern) = @_; + +    my $newestAge; +    my $newestFile = ""; +    opendir DIR, $dir or die; +    for my $file (readdir DIR) { +        if ($file =~ $pattern) { +            my $age = -M "$dir/$file"; +            if (!defined $newestAge || $age < $newestAge) { +                $newestFile = $file; +                $newestAge = $age; +            } +        } +    } +    closedir DIR; + +    return "$dir/$newestFile"; +} + +my $file1; +my $file2; + +if (scalar @ARGV == 2) { +    $file1 = $ARGV[0]; +    $file2 = $ARGV[1]; +} else { +    $file1 = readFile("$resultDirectory/baseline-filename.txt"); +    $file2 = newestFile("$resultDirectory", qr/sunspider-results-.+\.js$/); +} + +my $output = "var output1 = " . readResultsFile($file1) . ";\n"; +$output .= "var output2 = " . readResultsFile($file2) . ";\n"; + +dumpToFile($output, "$resultDirectory/sunspider-comparison-data.js"); + +system($jsShellPath, "-f", "$resultDirectory/sunspider-test-prefix.js", "-f", "$resultDirectory/sunspider-comparison-data.js", "-f", "resources/sunspider-compare-results.js", "-f", "resources/sunspider-standalone-compare.js");  | 
