@@ -14,42 +14,119 @@ const samples = Array.from({ length: nSamples }, (_, i) => i);
1414const nTimes = samples . length - 1 ;
1515
1616var tests = [ {
17- n : 1000
17+ n : 1000 , mode : 'no points' , nTraces : 1
1818} , {
19- n : 2000
19+ n : 2000 , mode : 'no points' , nTraces : 1
2020} , {
21- n : 4000
21+ n : 4000 , mode : 'no points' , nTraces : 1
2222} , {
23- n : 8000
23+ n : 8000 , mode : 'no points' , nTraces : 1
2424} , {
25- n : 16000
25+ n : 16000 , mode : 'no points' , nTraces : 1
2626} , {
27- n : 32000
27+ n : 32000 , mode : 'no points' , nTraces : 1
2828} , {
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
30100} ] ;
31101
32102tests . 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 ( ) {
34104 'use strict' ;
35105
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-
50106 var startTime , endTime ;
51107
52108 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+
53130 startTime = performance . now ( ) ;
54131
55132 // Wait for actual rendering to complete
@@ -77,7 +154,7 @@ tests.forEach(function(spec, index) {
77154 tests [ index ] . raw [ t ] = delta ;
78155
79156 var nodes = d3SelectAll ( 'g.trace.boxes' ) ;
80- expect ( nodes . size ( ) ) . toEqual ( 1 ) ;
157+ expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
81158
82159 if ( t === nTimes && index === tests . length - 1 ) {
83160 writeRawDataAsCSV ( 'box' , tests ) ;
0 commit comments