@@ -3,49 +3,127 @@ var delay = require('../assets/delay');
3
3
var d3SelectAll = require ( '../../strict-d3' ) . selectAll ;
4
4
var Plotly = require ( '../../../lib/core' ) ;
5
5
var writeRawDataAsCSV = require ( './assets/post_process' ) . writeRawDataAsCSV ;
6
+ var nSamples = require ( './assets/constants' ) . nSamples ;
6
7
7
8
var gd = createGraphDiv ( ) ;
8
9
9
- const samples = Array . from ( { length : 9 } , ( _ , i ) => i ) ;
10
+ const samples = Array . from ( { length : nSamples } , ( _ , i ) => i ) ;
10
11
const nTimes = samples . length - 1 ;
11
12
12
13
var tests = [ {
13
- n : 1000
14
+ n : 1000 , mode : 'markers' , nTraces : 1
14
15
} , {
15
- n : 2000
16
+ n : 2000 , mode : 'markers' , nTraces : 1
16
17
} , {
17
- n : 4000
18
+ n : 4000 , mode : 'markers' , nTraces : 1
18
19
} , {
19
- n : 8000
20
+ n : 8000 , mode : 'markers' , nTraces : 1
20
21
} , {
21
- n : 16000
22
+ n : 16000 , mode : 'markers' , nTraces : 1
22
23
} , {
23
- n : 32000
24
+ n : 32000 , mode : 'markers' , nTraces : 1
24
25
} , {
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
26
97
} ] ;
27
98
28
99
tests . 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 ( ) {
30
101
'use strict' ;
31
102
32
- var y = Float64Array . from ( { length : spec . n } , ( _ , i ) => i * Math . cos ( Math . sqrt ( i ) ) ) ;
103
+ var startTime , endTime ;
33
104
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
+ } ) ;
43
116
}
44
- } ;
45
117
46
- var startTime , endTime ;
118
+ var mock = {
119
+ data : data ,
120
+ layout : {
121
+ showlegend : false ,
122
+ width : 900 ,
123
+ height : 400
124
+ }
125
+ } ;
47
126
48
- beforeEach ( function ( done ) {
49
127
startTime = performance . now ( ) ;
50
128
51
129
// Wait for actual rendering to complete
@@ -73,7 +151,7 @@ tests.forEach(function(spec, index) {
73
151
tests [ index ] . raw [ t ] = delta ;
74
152
75
153
var nodes = d3SelectAll ( 'g.trace.scatter' ) ;
76
- expect ( nodes . size ( ) ) . toEqual ( 1 ) ;
154
+ expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
77
155
78
156
if ( t === nTimes && index === tests . length - 1 ) {
79
157
writeRawDataAsCSV ( 'scatter' , tests ) ;
0 commit comments