Skip to content

Commit f7e94b3

Browse files
author
Jianchun Xu
committed
[MERGE #2644 @jianchun] perf test script fixes
Merge pull request #2644 from jianchun:perfscript Add "WScript.Echo" definitions to all SunSpider js files to support non-Chakra hosts. `perftest.pl`: - Fix dir name cases. - Change to "-?" in test_switch ("/?" not supported on xplat). - Add "-testfile:<file>" switch to save perf test result to a file as well, by default to "perftest???.txt". This is useful if we want to use the test numbers as baseline for subsequent perf runs. - Add "-skipCheckSwitch" to support non-Chakra hosts. It is not meaningful to test for Chakra switches, and in addition may run into trouble (host may start command loop instead of exit).
2 parents c2b23c0 + 11cf024 commit f7e94b3

27 files changed

+369
-167
lines changed

test/benchmarks/SunSpider/3d-cube.js

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,16 @@
2020
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2121
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2222
(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.
23+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2424
*/
2525

26+
if(typeof(WScript) === "undefined")
27+
{
28+
var WScript = {
29+
Echo: print
30+
}
31+
}
32+
2633
function record(time) {
2734
document.getElementById("console").innerHTML = time + "ms";
2835
if (window.parent) {
@@ -65,7 +72,7 @@ function DrawLine(From, To) {
6572
var x = x1;
6673
var y = y1;
6774
var IncX1, IncY1;
68-
var IncX2, IncY2;
75+
var IncX2, IncY2;
6976
var Den;
7077
var Num;
7178
var NumAdd;
@@ -117,13 +124,13 @@ function CalcCross(V0, V1) {
117124
}
118125

119126
function CalcNormal(V0, V1, V2) {
120-
var A = new Array(); var B = new Array();
127+
var A = new Array(); var B = new Array();
121128
for (var i = 0; i < 3; i++) {
122129
A[i] = V0[i] - V1[i];
123130
B[i] = V2[i] - V1[i];
124131
}
125132
A = CalcCross(A, B);
126-
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
133+
var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
127134
for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
128135
A[3] = 1;
129136
return A;
@@ -218,7 +225,7 @@ function RotateZ(M, Phi) {
218225
var R = [
219226
[Cos,-Sin,0,0],
220227
[Sin,Cos,0,0],
221-
[0,0,1,0],
228+
[0,0,1,0],
222229
[0,0,0,1]
223230
];
224231
return MMulti(R, M);
@@ -308,23 +315,23 @@ function Init(CubeSize) {
308315
[0,0,1,0],
309316
[0,0,0,1]
310317
];
311-
318+
312319
// position information of qube
313320
MQube = [
314321
[1,0,0,0],
315322
[0,1,0,0],
316323
[0,0,1,0],
317324
[0,0,0,1]
318325
];
319-
326+
320327
// entity matrix
321328
I = [
322329
[1,0,0,0],
323330
[0,1,0,0],
324331
[0,0,1,0],
325332
[0,0,0,1]
326333
];
327-
334+
328335
// create qube
329336
Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
330337
Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
@@ -334,24 +341,24 @@ function Init(CubeSize) {
334341
Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
335342
Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
336343
Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
337-
344+
338345
// center of gravity
339346
Q[8] = new CreateP(0, 0, 0);
340-
347+
341348
// anti-clockwise edge check
342349
Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
343-
350+
344351
// calculate squad normals
345352
Q.Normal = new Array();
346353
for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
347-
354+
348355
// line drawn ?
349356
Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
350-
357+
351358
// create line pixels
352359
Q.NumPx = 9 * 2 * CubeSize;
353360
for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
354-
361+
355362
MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
356363
MQube = MMulti(MTrans, MQube);
357364

@@ -362,7 +369,7 @@ function Init(CubeSize) {
362369
DrawQube();
363370
Testing.Init = true;
364371
Loop();
365-
372+
366373
// Perform a simple sum-based verification.
367374
var sum = 0;
368375
for (var i = 0; i < Q.length; ++i) {

test/benchmarks/SunSpider/3d-morph.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,16 @@
2020
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2121
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2222
(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.
23+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2424
*/
2525

26+
if(typeof(WScript) === "undefined")
27+
{
28+
var WScript = {
29+
Echo: print
30+
}
31+
}
32+
2633
function record(time) {
2734
document.getElementById("console").innerHTML = time + "ms";
2835
if (window.parent) {
@@ -54,7 +61,7 @@ var _sunSpiderStartDate = new Date();
5461
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
5562
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
5663
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
57-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5865
*/
5966

6067
var loops = 15
@@ -65,17 +72,17 @@ function morph(a, f) {
6572
var PI2nx = Math.PI * 8/nx
6673
var sin = Math.sin
6774
var f30 = -(50 * sin(f*Math.PI*2))
68-
75+
6976
for (var i = 0; i < nz; ++i) {
7077
for (var j = 0; j < nx; ++j) {
7178
a[3*(i*nx+j)+1] = sin((j-1) * PI2nx ) * -f30
7279
}
7380
}
7481
}
7582

76-
83+
7784
var a = Array()
78-
for (var i=0; i < nx*nz*3; ++i)
85+
for (var i=0; i < nx*nz*3; ++i)
7986
a[i] = 0
8087

8188
for (var i = 0; i < loops; ++i) {

test/benchmarks/SunSpider/3d-raytrace.js

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,16 @@
2020
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2121
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2222
(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.
23+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2424
*/
2525

26+
if(typeof(WScript) === "undefined")
27+
{
28+
var WScript = {
29+
Echo: print
30+
}
31+
}
32+
2633
function record(time) {
2734
document.getElementById("console").innerHTML = time + "ms";
2835
if (window.parent) {
@@ -54,7 +61,7 @@ var _sunSpiderStartDate = new Date();
5461
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
5562
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
5663
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
57-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5865
*/
5966

6067
function createVector(x,y,z) {
@@ -119,7 +126,7 @@ function scale(v, scale) {
119126
}
120127

121128
function cross(v1, v2) {
122-
return [v1[1] * v2[2] - v1[2] * v2[1],
129+
return [v1[1] * v2[2] - v1[2] * v2[1],
123130
v1[2] * v2[0] - v1[0] * v2[2],
124131
v1[0] * v2[1] - v1[1] * v2[0]];
125132

@@ -143,8 +150,8 @@ function invertMatrix(self) {
143150
var tx = -self[3];
144151
var ty = -self[7];
145152
var tz = -self[11];
146-
for (h = 0; h < 3; h++)
147-
for (v = 0; v < 3; v++)
153+
for (h = 0; h < 3; h++)
154+
for (v = 0; v < 3; v++)
148155
temp[h + v * 4] = self[v + h * 4];
149156
for (i = 0; i < 11; i++)
150157
self[i] = temp[i];
@@ -162,19 +169,19 @@ function Triangle(p1, p2, p3) {
162169
var normal = cross(edge1, edge2);
163170
if (Math.abs(normal[0]) > Math.abs(normal[1]))
164171
if (Math.abs(normal[0]) > Math.abs(normal[2]))
165-
this.axis = 0;
166-
else
172+
this.axis = 0;
173+
else
167174
this.axis = 2;
168175
else
169-
if (Math.abs(normal[1]) > Math.abs(normal[2]))
176+
if (Math.abs(normal[1]) > Math.abs(normal[2]))
170177
this.axis = 1;
171-
else
178+
else
172179
this.axis = 2;
173180
var u = (this.axis + 1) % 3;
174181
var v = (this.axis + 2) % 3;
175182
var u1 = edge1[u];
176183
var v1 = edge1[v];
177-
184+
178185
var u2 = edge2[u];
179186
var v2 = edge2[v];
180187
this.normal = normalise(normal);
@@ -183,11 +190,11 @@ function Triangle(p1, p2, p3) {
183190
this.nd = dot(normal, p1) / normal[this.axis];
184191
var det = u1 * v2 - v1 * u2;
185192
this.eu = p1[u];
186-
this.ev = p1[v];
193+
this.ev = p1[v];
187194
this.nu1 = u1 / det;
188195
this.nv1 = -v1 / det;
189196
this.nu2 = v2 / det;
190-
this.nv2 = -u2 / det;
197+
this.nv2 = -u2 / det;
191198
this.material = [0.7, 0.7, 0.7];
192199
}
193200

@@ -201,13 +208,13 @@ Triangle.prototype.intersect = function(orig, dir, near, far) {
201208
var Pu = orig[u] + t * dir[u] - this.eu;
202209
var Pv = orig[v] + t * dir[v] - this.ev;
203210
var a2 = Pv * this.nu1 + Pu * this.nv1;
204-
if (a2 < 0)
211+
if (a2 < 0)
205212
return null;
206213
var a3 = Pu * this.nu2 + Pv * this.nv2;
207-
if (a3 < 0)
214+
if (a3 < 0)
208215
return null;
209216

210-
if ((a2 + a3) > 1)
217+
if ((a2 + a3) > 1)
211218
return null;
212219
return t;
213220
}
@@ -223,29 +230,29 @@ var zero = new Array(0,0,0);
223230
Scene.prototype.intersect = function(origin, dir, near, far) {
224231
var closest = null;
225232
for (i = 0; i < this.triangles.length; i++) {
226-
var triangle = this.triangles[i];
233+
var triangle = this.triangles[i];
227234
var d = triangle.intersect(origin, dir, near, far);
228235
if (d == null || d > far || d < near)
229236
continue;
230237
far = d;
231238
closest = triangle;
232239
}
233-
240+
234241
if (!closest)
235242
return [this.background[0],this.background[1],this.background[2]];
236-
243+
237244
var normal = closest.normal;
238-
var hit = add(origin, scale(dir, far));
245+
var hit = add(origin, scale(dir, far));
239246
if (dot(dir, normal) > 0)
240247
normal = [-normal[0], -normal[1], -normal[2]];
241-
248+
242249
var colour = null;
243250
if (closest.shader) {
244251
colour = closest.shader(closest, hit, dir);
245252
} else {
246253
colour = closest.material;
247254
}
248-
255+
249256
// do reflection
250257
var reflected = null;
251258
if (colour.reflection > 0.001) {
@@ -254,7 +261,7 @@ Scene.prototype.intersect = function(origin, dir, near, far) {
254261
if (colour.reflection >= 0.999999)
255262
return reflected;
256263
}
257-
264+
258265
var l = [this.ambient[0], this.ambient[1], this.ambient[2]];
259266
for (var i = 0; i < this.lights.length; i++) {
260267
var light = this.lights[i];
@@ -279,13 +286,13 @@ Scene.prototype.blocked = function(O, D, far) {
279286
var near = 0.0001;
280287
var closest = null;
281288
for (i = 0; i < this.triangles.length; i++) {
282-
var triangle = this.triangles[i];
289+
var triangle = this.triangles[i];
283290
var d = triangle.intersect(O, D, near, far);
284291
if (d == null || d > far || d < near)
285292
continue;
286293
return true;
287294
}
288-
295+
289296
return false;
290297
}
291298

@@ -357,11 +364,11 @@ function raytraceScene()
357364
var bfr = createVector( 10, -10, -10);
358365
var bbl = createVector(-10, -10, 10);
359366
var bbr = createVector( 10, -10, 10);
360-
367+
361368
// cube!!!
362369
// front
363370
var i = 0;
364-
371+
365372
triangles[i++] = new Triangle(tfl, tfr, bfr);
366373
triangles[i++] = new Triangle(tfl, bfr, bfl);
367374
// back
@@ -383,7 +390,7 @@ function raytraceScene()
383390
// bottom
384391
triangles[i++] = new Triangle(bbl, bbr, bfr);
385392
triangles[i++] = new Triangle(bbl, bfr, bfl);
386-
393+
387394
//Floor!!!!
388395
var green = createVector(0.0, 0.4, 0.0);
389396
var grey = createVector(0.4, 0.4, 0.4);
@@ -399,7 +406,7 @@ function raytraceScene()
399406
// angle *= angle;
400407
//grey.reflection = angle;
401408
return grey;
402-
} else
409+
} else
403410
return green;
404411
}
405412
var ffl = createVector(-1000, -30, -1000);
@@ -410,7 +417,7 @@ function raytraceScene()
410417
triangles[i-1].shader = floorShader;
411418
triangles[i++] = new Triangle(fbl, ffr, ffl);
412419
triangles[i-1].shader = floorShader;
413-
420+
414421
var _scene = new Scene(triangles);
415422
_scene.lights[0] = createVector(20, 38, -22);
416423
_scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
@@ -420,7 +427,7 @@ function raytraceScene()
420427
_scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
421428
_scene.ambient = createVector(0.1, 0.1, 0.1);
422429
// _scene.background = createVector(0.7, 0.7, 1.0);
423-
430+
424431
var size = 30;
425432
var pixels = new Array();
426433
for (var y = 0; y < size; y++) {

0 commit comments

Comments
 (0)