@@ -14,42 +14,119 @@ const samples = Array.from({ length: nSamples }, (_, i) => i);
14
14
const nTimes = samples . length - 1 ;
15
15
16
16
var tests = [ {
17
- n : 1000
17
+ n : 1000 , mode : 'no points' , nTraces : 1
18
18
} , {
19
- n : 2000
19
+ n : 2000 , mode : 'no points' , nTraces : 1
20
20
} , {
21
- n : 4000
21
+ n : 4000 , mode : 'no points' , nTraces : 1
22
22
} , {
23
- n : 8000
23
+ n : 8000 , mode : 'no points' , nTraces : 1
24
24
} , {
25
- n : 16000
25
+ n : 16000 , mode : 'no points' , nTraces : 1
26
26
} , {
27
- n : 32000
27
+ n : 32000 , mode : 'no points' , nTraces : 1
28
28
} , {
29
- n : 64000
29
+ n : 64000 , mode : 'no points' , nTraces : 1
30
+ } , {
31
+ n : 1000 , mode : 'all points' , nTraces : 1
32
+ } , {
33
+ n : 2000 , mode : 'all points' , nTraces : 1
34
+ } , {
35
+ n : 4000 , mode : 'all points' , nTraces : 1
36
+ } , {
37
+ n : 8000 , mode : 'all points' , nTraces : 1
38
+ } , {
39
+ n : 16000 , mode : 'all points' , nTraces : 1
40
+ } , {
41
+ n : 32000 , mode : 'all points' , nTraces : 1
42
+ } , {
43
+ n : 64000 , mode : 'all points' , nTraces : 1
44
+ } , {
45
+ n : 1000 , mode : 'no points' , nTraces : 10
46
+ } , {
47
+ n : 2000 , mode : 'no points' , nTraces : 10
48
+ } , {
49
+ n : 4000 , mode : 'no points' , nTraces : 10
50
+ } , {
51
+ n : 8000 , mode : 'no points' , nTraces : 10
52
+ } , {
53
+ n : 16000 , mode : 'no points' , nTraces : 10
54
+ } , {
55
+ n : 32000 , mode : 'no points' , nTraces : 10
56
+ } , {
57
+ n : 64000 , mode : 'no points' , nTraces : 10
58
+ } , {
59
+ n : 1000 , mode : 'all points' , nTraces : 10
60
+ } , {
61
+ n : 2000 , mode : 'all points' , nTraces : 10
62
+ } , {
63
+ n : 4000 , mode : 'all points' , nTraces : 10
64
+ } , {
65
+ n : 8000 , mode : 'all points' , nTraces : 10
66
+ } , {
67
+ n : 16000 , mode : 'all points' , nTraces : 10
68
+ } , {
69
+ n : 32000 , mode : 'all points' , nTraces : 10
70
+ } , {
71
+ n : 64000 , mode : 'all points' , nTraces : 10
72
+ } , {
73
+ n : 1000 , mode : 'no points' , nTraces : 100
74
+ } , {
75
+ n : 2000 , mode : 'no points' , nTraces : 100
76
+ } , {
77
+ n : 4000 , mode : 'no points' , nTraces : 100
78
+ } , {
79
+ n : 8000 , mode : 'no points' , nTraces : 100
80
+ } , {
81
+ n : 16000 , mode : 'no points' , nTraces : 100
82
+ } , {
83
+ n : 32000 , mode : 'no points' , nTraces : 100
84
+ } , {
85
+ n : 64000 , mode : 'no points' , nTraces : 100
86
+ } , {
87
+ n : 1000 , mode : 'all points' , nTraces : 100
88
+ } , {
89
+ n : 2000 , mode : 'all points' , nTraces : 100
90
+ } , {
91
+ n : 4000 , mode : 'all points' , nTraces : 100
92
+ } , {
93
+ n : 8000 , mode : 'all points' , nTraces : 100
94
+ } , {
95
+ n : 16000 , mode : 'all points' , nTraces : 100
96
+ } , {
97
+ n : 32000 , mode : 'all points' , nTraces : 100
98
+ } , {
99
+ n : 64000 , mode : 'all points' , nTraces : 100
30
100
} ] ;
31
101
32
102
tests . forEach ( function ( spec , index ) {
33
- describe ( 'Performance test box | size:' + spec . n , function ( ) {
103
+ describe ( 'Performance test ' + spec . nTraces + ' box | size:' + spec . n + ' | mode: ' + spec . mode , function ( ) {
34
104
'use strict' ;
35
105
36
- var y = Float64Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
37
-
38
- var mock = {
39
- data : [ {
40
- type : 'box' ,
41
- boxpoints : 'all' ,
42
- y : y
43
- } ] ,
44
- layout : {
45
- width : 900 ,
46
- height : 400
47
- }
48
- } ;
49
-
50
106
var startTime , endTime ;
51
107
52
108
beforeEach ( function ( done ) {
109
+ var y = Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
110
+ var data = [ ] ;
111
+ var nPerTrace = Math . floor ( spec . n / spec . nTraces ) ;
112
+ for ( var k = 0 ; k < spec . nTraces ; k ++ ) {
113
+ data . push ( {
114
+ type : 'box' ,
115
+ boxpoints : spec . mode === 'all points' ? 'all' : false ,
116
+ y : y . slice ( k * nPerTrace , ( k + 1 ) * nPerTrace ) ,
117
+ x : Array . from ( { length : nPerTrace } , ( _ , i ) => k )
118
+ } ) ;
119
+ }
120
+
121
+ var mock = {
122
+ data : data ,
123
+ layout : {
124
+ showlegend : false ,
125
+ width : 900 ,
126
+ height : 400
127
+ }
128
+ } ;
129
+
53
130
startTime = performance . now ( ) ;
54
131
55
132
// Wait for actual rendering to complete
@@ -77,7 +154,7 @@ tests.forEach(function(spec, index) {
77
154
tests [ index ] . raw [ t ] = delta ;
78
155
79
156
var nodes = d3SelectAll ( 'g.trace.boxes' ) ;
80
- expect ( nodes . size ( ) ) . toEqual ( 1 ) ;
157
+ expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
81
158
82
159
if ( t === nTimes && index === tests . length - 1 ) {
83
160
writeRawDataAsCSV ( 'box' , tests ) ;
0 commit comments