Import Dromaeo to WebKit repository.
[WebKit-https.git] / PerformanceTests / SunSpider / resources / sunspider-standalone-driver.js
1 /*
2  * Copyright (C) 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 var results = new Array();
27
28 (function(){
29
30 var time = 0;
31 var times = [];
32 times.length = tests.length;
33
34 for (var j = 0; j < tests.length; j++) {
35     var testBase = suitePath + "/" + tests[j];
36     var testName = testBase + ".js";
37     var testData = testBase + "-data.js";
38
39     if (testName.indexOf('parse-only') >= 0) {
40         times[j] = checkSyntax(testName);
41     } else {
42         // Tests may or may not have associated -data files whose loading
43         // should not be timed.
44         try {
45             load(testData);
46             // If a file does have test data, then we can't use the
47             // higher-precision `run' timer, because `run' uses a fresh
48             // global environment, so we fall back to `load'.
49             var startTime = new Date;
50             load(testName);
51             times[j] = new Date() - startTime;
52         } catch (e) {
53             // No test data, just use `run'.
54             times[j] = run(testName);
55         }
56     }
57     gc();
58 }
59
60 function recordResults(tests, times)
61 {
62     var output = "{\n";
63
64     for (j = 0; j < tests.length; j++) {
65         output += '    "' + tests[j] + '": ' + times[j] + ',\n'; 
66     }
67     output = output.substring(0, output.length - 2) + "\n";
68
69     output += "}";
70     print(output);
71 }
72
73 recordResults(tests, times);
74
75 })();
76