@@ -3,49 +3,127 @@ var delay = require('../assets/delay');
33var d3SelectAll = require ( '../../strict-d3' ) . selectAll ;
44var Plotly = require ( '../../../lib/core' ) ;
55var writeRawDataAsCSV = require ( './assets/post_process' ) . writeRawDataAsCSV ;
6+ var nSamples = require ( './assets/constants' ) . nSamples ;
67
78var gd = createGraphDiv ( ) ;
89
9- const samples = Array . from ( { length : 9 } , ( _ , i ) => i ) ;
10+ const samples = Array . from ( { length : nSamples } , ( _ , i ) => i ) ;
1011const nTimes = samples . length - 1 ;
1112
1213var tests = [ {
13- n : 1000
14+ n : 1000 , mode : 'markers' , nTraces : 1
1415} , {
15- n : 2000
16+ n : 2000 , mode : 'markers' , nTraces : 1
1617} , {
17- n : 4000
18+ n : 4000 , mode : 'markers' , nTraces : 1
1819} , {
19- n : 8000
20+ n : 8000 , mode : 'markers' , nTraces : 1
2021} , {
21- n : 16000
22+ n : 16000 , mode : 'markers' , nTraces : 1
2223} , {
23- n : 32000
24+ n : 32000 , mode : 'markers' , nTraces : 1
2425} , {
25- n : 64000
26+ n : 64000 , mode : 'markers' , nTraces : 1
27+ } , {
28+ n : 1000 , mode : 'lines' , nTraces : 1
29+ } , {
30+ n : 2000 , mode : 'lines' , nTraces : 1
31+ } , {
32+ n : 4000 , mode : 'lines' , nTraces : 1
33+ } , {
34+ n : 8000 , mode : 'lines' , nTraces : 1
35+ } , {
36+ n : 16000 , mode : 'lines' , nTraces : 1
37+ } , {
38+ n : 32000 , mode : 'lines' , nTraces : 1
39+ } , {
40+ n : 64000 , mode : 'lines' , nTraces : 1
41+ } , {
42+ n : 1000 , mode : 'markers' , nTraces : 10
43+ } , {
44+ n : 2000 , mode : 'markers' , nTraces : 10
45+ } , {
46+ n : 4000 , mode : 'markers' , nTraces : 10
47+ } , {
48+ n : 8000 , mode : 'markers' , nTraces : 10
49+ } , {
50+ n : 16000 , mode : 'markers' , nTraces : 10
51+ } , {
52+ n : 32000 , mode : 'markers' , nTraces : 10
53+ } , {
54+ n : 64000 , mode : 'markers' , nTraces : 10
55+ } , {
56+ n : 1000 , mode : 'lines' , nTraces : 10
57+ } , {
58+ n : 2000 , mode : 'lines' , nTraces : 10
59+ } , {
60+ n : 4000 , mode : 'lines' , nTraces : 10
61+ } , {
62+ n : 8000 , mode : 'lines' , nTraces : 10
63+ } , {
64+ n : 16000 , mode : 'lines' , nTraces : 10
65+ } , {
66+ n : 32000 , mode : 'lines' , nTraces : 10
67+ } , {
68+ n : 64000 , mode : 'lines' , nTraces : 10
69+ } , {
70+ n : 1000 , mode : 'markers' , nTraces : 100
71+ } , {
72+ n : 2000 , mode : 'markers' , nTraces : 100
73+ } , {
74+ n : 4000 , mode : 'markers' , nTraces : 100
75+ } , {
76+ n : 8000 , mode : 'markers' , nTraces : 100
77+ } , {
78+ n : 16000 , mode : 'markers' , nTraces : 100
79+ } , {
80+ n : 32000 , mode : 'markers' , nTraces : 100
81+ } , {
82+ n : 64000 , mode : 'markers' , nTraces : 100
83+ } , {
84+ n : 1000 , mode : 'lines' , nTraces : 100
85+ } , {
86+ n : 2000 , mode : 'lines' , nTraces : 100
87+ } , {
88+ n : 4000 , mode : 'lines' , nTraces : 100
89+ } , {
90+ n : 8000 , mode : 'lines' , nTraces : 100
91+ } , {
92+ n : 16000 , mode : 'lines' , nTraces : 100
93+ } , {
94+ n : 32000 , mode : 'lines' , nTraces : 100
95+ } , {
96+ n : 64000 , mode : 'lines' , nTraces : 100
2697} ] ;
2798
2899tests . forEach ( function ( spec , index ) {
29- describe ( 'Performance test scatter | size:' + spec . n , function ( ) {
100+ describe ( 'Performance test ' + spec . nTraces + ' scatter | size:' + spec . n + ' | mode: ' + spec . mode , function ( ) {
30101 'use strict' ;
31102
32- var y = Float64Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
103+ var startTime , endTime ;
33104
34- var mock = {
35- data : [ {
36- type : 'scatter' ,
37- mode : 'markers' ,
38- y : y
39- } ] ,
40- layout : {
41- width : 900 ,
42- height : 400
105+ beforeEach ( function ( done ) {
106+ var y = Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
107+ var data = [ ] ;
108+ var nPerTrace = Math . floor ( spec . n / spec . nTraces ) ;
109+ for ( var k = 0 ; k < spec . nTraces ; k ++ ) {
110+ data . push ( {
111+ type : 'scatter' ,
112+ mode : spec . mode ,
113+ y : y . slice ( k * nPerTrace , ( k + 1 ) * nPerTrace ) ,
114+ x : Array . from ( { length : nPerTrace } , ( _ , i ) => i + k * nPerTrace )
115+ } ) ;
43116 }
44- } ;
45117
46- var startTime , endTime ;
118+ var mock = {
119+ data : data ,
120+ layout : {
121+ showlegend : false ,
122+ width : 900 ,
123+ height : 400
124+ }
125+ } ;
47126
48- beforeEach ( function ( done ) {
49127 startTime = performance . now ( ) ;
50128
51129 // Wait for actual rendering to complete
@@ -73,7 +151,7 @@ tests.forEach(function(spec, index) {
73151 tests [ index ] . raw [ t ] = delta ;
74152
75153 var nodes = d3SelectAll ( 'g.trace.scatter' ) ;
76- expect ( nodes . size ( ) ) . toEqual ( 1 ) ;
154+ expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
77155
78156 if ( t === nTimes && index === tests . length - 1 ) {
79157 writeRawDataAsCSV ( 'scatter' , tests ) ;
0 commit comments