Skip to content

Commit e223a63

Browse files
committed
dev(performance): use uPlot.join like all other examples
1 parent 49f4228 commit e223a63

File tree

1 file changed

+7
-85
lines changed

1 file changed

+7
-85
lines changed

demos/multiple_data_normalisation.html

Lines changed: 7 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -51,69 +51,6 @@
5151
{ time: 9, value: Math.sin(90 * (Math.PI / 180)) * 5 }
5252
]
5353

54-
class Normalisation {
55-
/**
56-
* number of datasets
57-
*/
58-
seriesCount = 0
59-
60-
/**
61-
* all datasets
62-
* { [key: number]: Array<number | null | undefined> }
63-
*/
64-
dataHolder = []
65-
66-
/**
67-
* add a dataset and normalisation with all other datasets
68-
*/
69-
add(set) {
70-
const serieNr = ++this.seriesCount
71-
72-
// "undefined" means there is no valide value for this point
73-
if (this.seriesCount > 1) {
74-
// normalisation of existing datasets
75-
Object.values(this.dataHolder).forEach((valuesAtTime) => {
76-
if (valuesAtTime.length !== this.seriesCount) {
77-
valuesAtTime.splice(serieNr - 1, 0, undefined)
78-
}
79-
})
80-
}
81-
set.forEach((p) => {
82-
const timeToDraw = p.time
83-
if (this.dataHolder[timeToDraw] === undefined) {
84-
this.dataHolder[timeToDraw] = []
85-
for (let nr = 0; nr < this.seriesCount; nr++) {
86-
this.dataHolder[timeToDraw][nr] = undefined
87-
}
88-
}
89-
this.dataHolder[timeToDraw][serieNr - 1] = p.value
90-
})
91-
}
92-
93-
/**
94-
* generate Dataset for uPlot
95-
*/
96-
map() {
97-
/** uPlot.AlignedData */
98-
const data = [[]]
99-
const timeserie = data[0]
100-
Object.entries(this.dataHolder)
101-
.sort()
102-
.forEach(([time, valuesAtTime], i) => {
103-
const timestamp = Number(time)
104-
timeserie[i] = timestamp
105-
valuesAtTime.forEach((valueAtTime, nr) => {
106-
const dataSetNr = nr + 1
107-
if (!data[dataSetNr]) {
108-
data[dataSetNr] = []
109-
}
110-
data[dataSetNr][i] = valueAtTime
111-
})
112-
})
113-
return data
114-
}
115-
}
116-
11754
const opts = {
11855
title: "Lines and stepps -> normalisation of datasets",
11956
width: 800,
@@ -167,28 +104,13 @@
167104
],
168105
};
169106

170-
const dataHolder = new Normalisation()
171-
172-
performance.mark('map_start');
173-
dataHolder.add(dataset01_s_blue)
174-
dataHolder.add(dataset02_s_red)
175-
dataHolder.add(dataset03_l_green)
176-
dataHolder.add(dataset04_l_yellow)
177-
dataHolder.add(dataset05_sin)
178-
const data = dataHolder.map()
179-
performance.mark('map_end');
180-
181-
performance.mark('join_start');
182-
const data01 = [dataset01_s_blue.map(v => v.time), dataset01_s_blue.map(v => v.value)]
183-
const data02 = [dataset02_s_red.map(v => v.time), dataset02_s_red.map(v => v.value)]
184-
const data03 = [dataset03_l_green.map(v => v.time), dataset03_l_green.map(v => v.value)]
185-
const data04 = [dataset04_l_yellow.map(v => v.time), dataset04_l_yellow.map(v => v.value)]
186-
const data05 = [dataset05_sin.map(v => v.time), dataset05_sin.map(v => v.value)]
187-
const dataJoined = uPlot.join([data01, data02, data03, data04, data05])
188-
performance.mark('join_end');
189-
const r_my = performance.measure("measure map", 'map_start', 'map_end');
190-
const r_join = performance.measure("measure join", 'join_start', 'join_end');
191-
console.log(r_my, r_join, r_my.duration < r_join.duration ? 'map never wins' : 'join is always faster');
107+
const data = uPlot.join([
108+
[dataset01_s_blue.map(v => v.time), dataset01_s_blue.map(v => v.value)],
109+
[dataset02_s_red.map(v => v.time), dataset02_s_red.map(v => v.value)],
110+
[dataset03_l_green.map(v => v.time), dataset03_l_green.map(v => v.value)],
111+
[dataset04_l_yellow.map(v => v.time), dataset04_l_yellow.map(v => v.value)],
112+
[dataset05_sin.map(v => v.time), dataset05_sin.map(v => v.value)]
113+
]);
192114

193115
const plot = new uPlot(opts, data, document.body);
194116

0 commit comments

Comments
 (0)