Add JetStream to PerformanceTests
[WebKit-https.git] / PerformanceTests / JetStream / Octane2Setup.js
1 // Copyright (C) 2014 Apple Inc. All rights reserved.
2 //
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions
5 // are met:
6 // 1. Redistributions of source code must retain the above copyright
7 //    notice, this list of conditions and the following disclaimer.
8 // 2. Redistributions in binary form must reproduce the above copyright
9 //    notice, this list of conditions and the following disclaimer in the
10 //    documentation and/or other materials provided with the distribution.
11 //
12 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
13 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
14 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
16 // BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
17 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
18 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
19 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
20 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
21 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
22 // THE POSSIBILITY OF SUCH DAMAGE.
23
24 var Octane2Suites = [
25     {name: "richards", category: "Throughput", files: ["richards.js"]},
26     {name: "delta-blue", category: "Throughput", files: ["deltablue.js"]},
27     {name: "crypto", category: "Throughput", files: ["crypto.js"]},
28     {name: "proto-raytracer", category: "Throughput", files: ["raytrace.js"]},
29     {name: "earley-boyer", category: "Throughput", files: ["earley-boyer.js"]},
30     {name: "regexp-2010", category: "Throughput", files: ["regexp.js"]},
31     {name: "splay", category: "Throughput", latency: true, files:["splay.js"]},
32     {name: "navier-stokes", category: "Throughput", files: ["navier-stokes.js"]},
33     {name: "pdfjs", category: "Throughput", files: ["pdfjs.js"]},
34     {name: "mandreel", category: "Throughput", latency: true, files: ["mandreel.js"]},
35     {name: "gbemu", category: "Throughput", files: ["gbemu-part1.js", "gbemu-part2.js"]},
36     {name: "code-first-load", category: "Latency", files: ["code-load.js"]},
37     {name: "box2d", category: "Throughput", files: ["box2d.js"]},
38     {name: "zlib", category: "Throughput", files: ["zlib.js", "zlib-data.js"]},
39     {name: "typescript", category: "Latency", oneRun: true, files: ["typescript.js", "typescript-input.js", "typescript-compiler.js"]}
40 ];
41
42 for (var i = 0; i < Octane2Suites.length; ++i) {
43     var suite = Octane2Suites[i];
44     var myBenchmarks = [{
45         name: suite.name,
46         unit: suite.oneRun ? "ms" : "ms/run",
47         category: suite.category,
48     }];
49     if (suite.latency) {
50         myBenchmarks.push({
51             name: suite.name + "-latency",
52             prefix: "&sigma; = ",
53             category: "Latency"
54         });
55     }
56     
57     var code = "";
58     code += "<script src=\"Octane2/base.js\"></script>\n";
59     for (var j = 0; j < suite.files.length; ++j)
60         code += "<script src=\"Octane2/" + suite.files[j] + "\"></script>\n";
61     code += "<script>\n";
62     code += "BenchmarkSuite.scores = [];\n";
63     code += "var __suite = BenchmarkSuite.suites[0];\n";
64     code += "for (var __thing = __suite.RunStep({}); __thing; __thing = __thing());\n";
65     code += "top.JetStream.reportResult(\n";
66     code += "    BenchmarkSuite.GeometricMeanTime(__suite.results) / 1000,\n";
67     code += "    BenchmarkSuite.GeometricMeanLatency(__suite.results) / 1000);\n";
68     code += "</script>";
69     
70     JetStream.addPlan({
71         name: suite.name,
72         benchmarks: myBenchmarks,
73         code: code
74     });
75 }
76