Reviewed by Adam.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 28 Oct 2007 23:08:44 +0000 (23:08 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 28 Oct 2007 23:08:44 +0000 (23:08 +0000)
        * resources/sunspider-analyze-results.js: Tweak the output format a little.
        Change so that when there's only one run we don't write out confidence
        intervals at all rather than writing "NaN" over and over again.

        * sunspider: Use the time and date as a suffix on the results file, that way
        all the results are left behind in the tmp directory. This will make it easy
        for us to add features that compare past results in the future. Also rename
        the .mshark files using the same scheme.

        * sunspider-compare-results: Relax the parsing rules so we can parse the
        results file exactly as it's emitted from sunspider.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27194 268f45cc-cd09-0410-ab3c-d52691b4dbfc

SunSpider/ChangeLog
SunSpider/resources/sunspider-analyze-results.js
SunSpider/sunspider
SunSpider/sunspider-compare-results

index 05cf038c1607e810681dc6d84571a3ba2c64212c..2a350e025e36c53a32f5db14066d8cd97280d95e 100644 (file)
@@ -1,3 +1,19 @@
+2007-10-28  Darin Adler  <darin@apple.com>
+
+        Reviewed by Adam.
+
+        * resources/sunspider-analyze-results.js: Tweak the output format a little.
+        Change so that when there's only one run we don't write out confidence
+        intervals at all rather than writing "NaN" over and over again.
+
+        * sunspider: Use the time and date as a suffix on the results file, that way
+        all the results are left behind in the tmp directory. This will make it easy
+        for us to add features that compare past results in the future. Also rename
+        the .mshark files using the same scheme.
+
+        * sunspider-compare-results: Relax the parsing rules so we can parse the
+        results file exactly as it's emitted from sunspider.
+
 2007-10-25  Adam Roben  <aroben@apple.com>
 
         Strip carriage returns from results
index c235b72a74a924e06a6544be01591425f68b9dc4..d849f595206054aae1bef3647d5771a734d31457 100644 (file)
@@ -180,6 +180,9 @@ function formatResult(meanWidth, mean, stdErr, n)
         meanString = " " + meanString;
     }
 
+    if (n == 1)
+        return meanString + "ms";
+
     return meanString + "ms +/- " + ((tDist(n) * stdErr / mean) * 100).toFixed(1) + "%";
 }
 
@@ -238,11 +241,14 @@ function printOutput()
     var meanWidth = computeMeanWidth();
 
     print("\n");
-    print("========================================");
-    print("RESULTS (means and 95% confidence intervals)");
-    print("----------------------------------------");
+    print("============================================");
+    if (count == 1)
+        print("RESULTS");
+    else
+        print("RESULTS (means and 95% confidence intervals)");
+    print("--------------------------------------------");
     print(resultLine(labelWidth, 0, "Total", meanWidth, mean, stdErr));
-    print("----------------------------------------");
+    print("--------------------------------------------");
     for (var category in categoryMeans) {
         print("");
         print(resultLine(labelWidth, 2, category, meanWidth, categoryMeans[category], categoryStdErrs[category]));
index 9a954e6890fcf43c835273724f22dbf4bfe8491f..fbe59ba705690bca70c9267a25208af700442e7c 100755 (executable)
@@ -28,6 +28,7 @@ use strict;
 use Getopt::Long;
 use File::Basename;
 use Cwd;
+use POSIX qw(strftime);
 
 my $showHelp = 0;
 my $runShark = 0;
@@ -51,7 +52,7 @@ GetOptions('runs=i' => \$testRuns,
            'tests=s' => \$testsPattern,
            'help' => \$showHelp);
 
-$testRuns = 1  if $runShark;
+$testRuns = 1 if $runShark;
 
 if (!$jsShellPath || $showHelp) {
    print STDERR $usage;
@@ -66,7 +67,6 @@ sub dumpToFile($$)
     close FILE;
 }
 
-# FIXME: these globals are rather poor abstraction
 my @tests = ();
 my @categories = ();
 my %uniqueCategories = ();
@@ -89,19 +89,23 @@ sub loadTestsList()
     close TESTLIST;
 }
 
+my $timeString = strftime "%Y-%m-%d-%H:%M:%S", localtime $^T;
+my $prefixFile = "tmp/sunspider-test-prefix.js";
+my $resultsFile = "tmp/sunspider-results-$timeString.js";
+
 sub writePrefixFile()
 {
     my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n";
     $prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n";
 
     mkdir "tmp";
-    dumpToFile($prefix, "tmp/sunspider-test-prefix.js");
+    dumpToFile($prefix, $prefixFile);
 }
 
 sub runTestsOnce($)
 {
     my ($useShark) = @_;
-    my $shellArgs = "-f tmp/sunspider-test-prefix.js -f resources/sunspider-standalone-driver.js 2> /dev/null";
+    my $shellArgs = "-f $prefixFile -f resources/sunspider-standalone-driver.js 2> /dev/null";
     my $output;
     if ($useShark) {
         $output = `shark -i -1 -q "$jsShellPath" $shellArgs`;
@@ -118,7 +122,7 @@ if ($testsPattern) {
     print STDERR "Found " . scalar(@tests) . " tests\n";
 }
 die "No tests to run"  unless scalar(@tests);
-print STDERR "Running SunSpider once for warmup, then $testRuns time" . ($testRuns == 1 ? "" : "s") . ($runShark ? " under Shark" : "") . "\n";
+print STDERR "Running SunSpider once for warmup, then " . ($runShark ? "under Shark" : "$testRuns time" . ($testRuns == 1 ? "" : "s")) . "\n";
 writePrefixFile();
 
 runTestsOnce(0);
@@ -140,9 +144,9 @@ while ($count++ < $testRuns) {
 print "]\n";
 
 my $output = "var output = [\n" . join(",\n", @results) . "\n];\n";
-dumpToFile($output, "tmp/sunspider-results.js");
+dumpToFile($output, $resultsFile);
 
-system("$jsShellPath", "-f", "tmp/sunspider-test-prefix.js", "-f", "tmp/sunspider-results.js", "-f", "resources/sunspider-analyze-results.js");
+system("$jsShellPath", "-f", $prefixFile, "-f", $resultsFile, "-f", "resources/sunspider-analyze-results.js");
 
 if ($runShark) {
     my $newestAge = 0;
@@ -158,5 +162,9 @@ if ($runShark) {
         }
     }
     closedir DIR;
-    exec "/usr/bin/open", $newestMShark if $newestMShark;
+    if ($newestMShark) {
+        my $profileFile = "tmp/sunspider-profile-$timeString.mshark";
+        rename $newestMShark, $profileFile or die;
+        exec "/usr/bin/open", $profileFile;
+    }
 }
index b88292453a773380ccfaaa954c2cbeab36fe6fc8..134c8eee0c3a38295b1bfa48d8c22919cc407959 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -w
 
-# Copyright (C) 2007 Apple Inc.  All rights reserved.
+# 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
@@ -50,24 +50,32 @@ 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 .= $_;
-           }
-       } else {
-           if (/^[}][]]$/) {
-               $foundEnd = 1;
-               chomp;
-               $result .= $_;
-               last;
-           } else {
-               $result .= $_;
-           }
-       } 
+            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;
 
@@ -89,4 +97,4 @@ $output .= "var output2 = " . readResultsFile($ARGV[1]) . ";\n";
 
 dumpToFile($output, "tmp/sunspider-comparison-data.js");
 
-system("$jsShellPath", "-f", "tmp/sunspider-test-prefix.js", "-f", "tmp/sunspider-comparison-data.js", "-f", "resources/sunspider-compare-results.js");
+system($jsShellPath, "-f", "tmp/sunspider-test-prefix.js", "-f", "tmp/sunspider-comparison-data.js", "-f", "resources/sunspider-compare-results.js");