@@ -14,41 +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 : 'group' , nTraces : 1
1818} , {
19- n :2000
19+ n :2000 , mode : 'group' , nTraces : 1
2020} , {
21- n :4000
21+ n :4000 , mode : 'group' , nTraces : 1
2222} , {
23- n :8000
23+ n :8000 , mode : 'group' , nTraces : 1
2424} , {
25- n :16000
25+ n :16000 , mode : 'group' , nTraces : 1
2626} , {
27- n :32000
27+ n :32000 , mode : 'group' , nTraces : 1
2828} , {
29- n :64000
29+ n :64000 , mode :'group' , nTraces :1
30+ } , {
31+ n :1000 , mode :'stack' , nTraces :1
32+ } , {
33+ n :2000 , mode :'stack' , nTraces :1
34+ } , {
35+ n :4000 , mode :'stack' , nTraces :1
36+ } , {
37+ n :8000 , mode :'stack' , nTraces :1
38+ } , {
39+ n :16000 , mode :'stack' , nTraces :1
40+ } , {
41+ n :32000 , mode :'stack' , nTraces :1
42+ } , {
43+ n :64000 , mode :'stack' , nTraces :1
44+ } , {
45+ n :1000 , mode :'group' , nTraces :10
46+ } , {
47+ n :2000 , mode :'group' , nTraces :10
48+ } , {
49+ n :4000 , mode :'group' , nTraces :10
50+ } , {
51+ n :8000 , mode :'group' , nTraces :10
52+ } , {
53+ n :16000 , mode :'group' , nTraces :10
54+ } , {
55+ n :32000 , mode :'group' , nTraces :10
56+ } , {
57+ n :64000 , mode :'group' , nTraces :10
58+ } , {
59+ n :1000 , mode :'stack' , nTraces :10
60+ } , {
61+ n :2000 , mode :'stack' , nTraces :10
62+ } , {
63+ n :4000 , mode :'stack' , nTraces :10
64+ } , {
65+ n :8000 , mode :'stack' , nTraces :10
66+ } , {
67+ n :16000 , mode :'stack' , nTraces :10
68+ } , {
69+ n :32000 , mode :'stack' , nTraces :10
70+ } , {
71+ n :64000 , mode :'stack' , nTraces :10
72+ } , {
73+ n :1000 , mode :'group' , nTraces :100
74+ } , {
75+ n :2000 , mode :'group' , nTraces :100
76+ } , {
77+ n :4000 , mode :'group' , nTraces :100
78+ } , {
79+ n :8000 , mode :'group' , nTraces :100
80+ } , {
81+ n :16000 , mode :'group' , nTraces :100
82+ } , {
83+ n :32000 , mode :'group' , nTraces :100
84+ } , {
85+ n :64000 , mode :'group' , nTraces :100
86+ } , {
87+ n :1000 , mode :'stack' , nTraces :100
88+ } , {
89+ n :2000 , mode :'stack' , nTraces :100
90+ } , {
91+ n :4000 , mode :'stack' , nTraces :100
92+ } , {
93+ n :8000 , mode :'stack' , nTraces :100
94+ } , {
95+ n :16000 , mode :'stack' , nTraces :100
96+ } , {
97+ n :32000 , mode :'stack' , nTraces :100
98+ } , {
99+ n :64000 , mode :'stack' , nTraces :100
30100} ] ;
31101
32102tests . forEach ( function ( spec , index ) {
33- describe ( 'Performance test histogram | size:' + spec . n , function ( ) {
103+ describe ( 'Performance test' + spec . nTraces + ' histogram | size:'+ spec . n + ' | mode: ' + spec . mode , function ( ) {
34104'use strict' ;
35105
36- var x = Float64Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
106+ var startTime , endTime ;
37107
38- var mock = {
39- data :[ {
40- type :'histogram' ,
41- x :x
42- } ] ,
43- layout :{
44- width :900 ,
45- height :400
108+ beforeEach ( function ( done ) {
109+ var z = 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 :'histogram' ,
115+ x :z . slice ( k * nPerTrace , ( k + 1 ) * nPerTrace ) ,
116+ y :Array . from ( { length :nPerTrace } , ( _ , i ) => i )
117+ } ) ;
46118}
47- } ;
48119
49- var startTime , endTime ;
120+ var mock = {
121+ data :data ,
122+ layout :{
123+ barmode :spec . mode ,
124+ showlegend :false ,
125+ width :900 ,
126+ height :400
127+ }
128+ } ;
50129
51- beforeEach ( function ( done ) {
52130startTime = performance . now ( ) ;
53131
54132// Wait for actual rendering to complete
@@ -76,7 +154,7 @@ tests.forEach(function(spec, index) {
76154tests [ index ] . raw [ t ] = delta ;
77155
78156var nodes = d3SelectAll ( 'g.trace.bars' ) ;
79- expect ( nodes . size ( ) ) . toEqual ( 1 ) ;
157+ expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
80158
81159if ( t === nTimes && index === tests . length - 1 ) {
82160writeRawDataAsCSV ( 'histogram' , tests ) ;