Skip to content

Commit ab37542

Browse files
committed
collect performance data and create test report
1 parent e83dbec commit ab37542

File tree

3 files changed

+156
-20
lines changed

3 files changed

+156
-20
lines changed

test/jasmine/performance_tests/bar_test.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var PlotlyBar = require('../../../lib/bar');
66

77
var gd = createGraphDiv();
88

9-
[{
9+
var tests = [{
1010
n: 1000, averageCap: 75
1111
}, {
1212
n: 2000, averageCap: 100
@@ -20,13 +20,15 @@ var gd = createGraphDiv();
2020
n: 32000, averageCap: 1200
2121
}, {
2222
n: 64000, averageCap: 2400
23-
}].forEach(function(spec) {
23+
}];
24+
25+
tests.forEach(function(spec, index) {
2426
describe('Bundle with bar | size:' + spec.n, function() {
2527
'use strict';
2628

2729
Plotly.register(PlotlyBar);
2830

29-
const samples = Array.from({ length: 5 }, (_, i) => i);
31+
const samples = Array.from({ length: 9 }, (_, i) => i);
3032
const nTimes = samples.length - 1;
3133

3234
var y = Float64Array.from({ length: spec.n }, (_, i) => i * Math.cos(Math.sqrt(i)));
@@ -37,7 +39,7 @@ var gd = createGraphDiv();
3739
y: y
3840
}],
3941
layout: {
40-
width: 1200,
42+
width: 900,
4143
height: 400
4244
}
4345
};
@@ -62,27 +64,37 @@ var gd = createGraphDiv();
6264
var delta = Date.now() - startTime;
6365

6466
if(t === 0) {
65-
console.log('________________________________');
66-
console.log('number of points in bar: ' + spec.n);
67-
console.log('expected average (cap): ' + spec.averageCap + ' ms');
67+
// console.log('________________________________');
68+
// console.log('number of points: ' + spec.n);
69+
// console.log('expected average (cap): ' + spec.averageCap + ' ms');
70+
71+
tests[index].raw = [];
6872
}
73+
tests[index].raw[t] = delta;
6974

7075
if(t > 0) { // we skip the first run which is slow
7176
maxDelta = Math.max(maxDelta, delta);
7277
aveDelta += delta / nTimes;
7378
}
7479

75-
console.log('turn: ' + t + ' | ' + delta + ' ms');
80+
// console.log('turn: ' + t + ' | ' + delta + ' ms');
7681

7782
if(t === nTimes) {
78-
console.log('max: ' + maxDelta);
79-
console.log('ave: ' + aveDelta);
83+
tests[index].average = aveDelta;
84+
tests[index].maximum = maxDelta;
85+
86+
// console.log('max: ' + maxDelta);
87+
// console.log('ave: ' + aveDelta);
8088

8189
expect(aveDelta).toBeLessThan(spec.averageCap);
8290
}
8391

8492
var nodes = d3SelectAll('g.trace.bars');
8593
expect(nodes.size()).toEqual(1);
94+
95+
if(t === nTimes && index === tests.length - 1) {
96+
console.log(JSON.stringify(tests, null, 2));
97+
}
8698
});
8799
});
88100
});
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
var createGraphDiv = require('../assets/create_graph_div');
2+
var delay = require('../assets/delay');
3+
var d3SelectAll = require('../../strict-d3').selectAll;
4+
var Plotly = require('../../../lib/core');
5+
var Plotlyheatmap = require('../../../lib/heatmap');
6+
7+
var gd = createGraphDiv();
8+
9+
var tests = [{
10+
nx: 50, ny: 20, averageCap: 75
11+
}, {
12+
nx: 100, ny: 40, averageCap: 100
13+
}, {
14+
nx: 200, ny: 80, averageCap: 150
15+
}, {
16+
nx: 400, ny: 160, averageCap: 300
17+
}, {
18+
nx: 800, ny: 320, averageCap: 600
19+
}, {
20+
nx: 1600, ny: 640, averageCap: 1200
21+
}, {
22+
nx: 3200, ny: 1280, averageCap: 2400
23+
}];
24+
25+
tests.forEach(function(spec, index) {
26+
describe('Bundle with heatmap | size:' + spec.n, function() {
27+
'use strict';
28+
29+
Plotly.register(Plotlyheatmap);
30+
31+
const samples = Array.from({ length: 9 }, (_, i) => i);
32+
const nTimes = samples.length - 1;
33+
34+
var A = spec.nx;
35+
var B = spec.ny;
36+
spec.n = A * B;
37+
38+
var x = Uint16Array.from({ length: A }, (_, i) => i);
39+
var y = Uint16Array.from({ length: B }, (_, i) => i);
40+
var z = [];
41+
for(var k = 0; k < B ; k++) {
42+
z[k] = Float64Array.from({ length: A }, (_, i) => k * Math.cos(Math.sqrt(i)));
43+
}
44+
45+
var mock = {
46+
data: [{
47+
type: 'heatmap',
48+
x: x,
49+
y: y,
50+
z: z
51+
}],
52+
layout: {
53+
width: 900,
54+
height: 400
55+
}
56+
};
57+
58+
var startTime;
59+
60+
beforeEach(function(done) {
61+
startTime = Date.now();
62+
63+
Plotly.newPlot(gd, mock).then(done);
64+
});
65+
66+
afterEach(function(done) {
67+
delay(100)().then(done);
68+
});
69+
70+
var maxDelta = 0;
71+
var aveDelta = 0;
72+
73+
samples.forEach(function(t) {
74+
it('should graph heatmap traces | turn: ' + t, function() {
75+
var delta = Date.now() - startTime;
76+
77+
if(t === 0) {
78+
// console.log('________________________________');
79+
// console.log('number of points: ' + spec.n);
80+
// console.log('expected average (cap): ' + spec.averageCap + ' ms');
81+
82+
tests[index].raw = [];
83+
}
84+
tests[index].raw[t] = delta;
85+
86+
if(t > 0) { // we skip the first run which is slow
87+
maxDelta = Math.max(maxDelta, delta);
88+
aveDelta += delta / nTimes;
89+
}
90+
91+
// console.log('turn: ' + t + ' | ' + delta + ' ms');
92+
93+
if(t === nTimes) {
94+
tests[index].average = aveDelta;
95+
tests[index].maximum = maxDelta;
96+
97+
// console.log('max: ' + maxDelta);
98+
// console.log('ave: ' + aveDelta);
99+
100+
expect(aveDelta).toBeLessThan(spec.averageCap);
101+
}
102+
103+
var nodes = d3SelectAll('g.heatmaplayer');
104+
expect(nodes.size()).toEqual(1);
105+
106+
if(t === nTimes && index === tests.length - 1) {
107+
console.log(JSON.stringify(tests, null, 2));
108+
}
109+
});
110+
});
111+
});
112+
});

test/jasmine/performance_tests/scatter_test.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var Plotly = require('../../../lib/core');
55

66
var gd = createGraphDiv();
77

8-
[{
8+
var tests = [{
99
n: 1000, averageCap: 75
1010
}, {
1111
n: 2000, averageCap: 100
@@ -19,11 +19,13 @@ var gd = createGraphDiv();
1919
n: 32000, averageCap: 1200
2020
}, {
2121
n: 64000, averageCap: 2400
22-
}].forEach(function(spec) {
22+
}];
23+
24+
tests.forEach(function(spec, index) {
2325
describe('Bundle with scatter | size:' + spec.n, function() {
2426
'use strict';
2527

26-
const samples = Array.from({ length: 5 }, (_, i) => i);
28+
const samples = Array.from({ length: 9 }, (_, i) => i);
2729
const nTimes = samples.length - 1;
2830

2931
var y = Float64Array.from({ length: spec.n }, (_, i) => i * Math.cos(Math.sqrt(i)));
@@ -35,7 +37,7 @@ var gd = createGraphDiv();
3537
y: y
3638
}],
3739
layout: {
38-
width: 1200,
40+
width: 900,
3941
height: 400
4042
}
4143
};
@@ -60,27 +62,37 @@ var gd = createGraphDiv();
6062
var delta = Date.now() - startTime;
6163

6264
if(t === 0) {
63-
console.log('________________________________');
64-
console.log('number of points in scatter: ' + spec.n);
65-
console.log('expected average (cap): ' + spec.averageCap + ' ms');
65+
// console.log('________________________________');
66+
// console.log('number of points: ' + spec.n);
67+
// console.log('expected average (cap): ' + spec.averageCap + ' ms');
68+
69+
tests[index].raw = [];
6670
}
71+
tests[index].raw[t] = delta;
6772

6873
if(t > 0) { // we skip the first run which is slow
6974
maxDelta = Math.max(maxDelta, delta);
7075
aveDelta += delta / nTimes;
7176
}
7277

73-
console.log('turn: ' + t + ' | ' + delta + ' ms');
78+
// console.log('turn: ' + t + ' | ' + delta + ' ms');
7479

7580
if(t === nTimes) {
76-
console.log('max: ' + maxDelta);
77-
console.log('ave: ' + aveDelta);
81+
tests[index].average = aveDelta;
82+
tests[index].maximum = maxDelta;
83+
84+
// console.log('max: ' + maxDelta);
85+
// console.log('ave: ' + aveDelta);
7886

7987
expect(aveDelta).toBeLessThan(spec.averageCap);
8088
}
8189

8290
var nodes = d3SelectAll('g.trace.scatter');
8391
expect(nodes.size()).toEqual(1);
92+
93+
if(t === nTimes && index === tests.length - 1) {
94+
console.log(JSON.stringify(tests, null, 2));
95+
}
8496
});
8597
});
8698
});

0 commit comments

Comments
 (0)