show total execution time in stacked charts

This commit is contained in:
Alfred Melch 2019-08-06 16:05:54 +02:00
parent 39c83787be
commit 57d6da26de
2 changed files with 57 additions and 21 deletions

View File

@ -49,7 +49,8 @@ class WasmVsJsChart extends React.Component {
}
convertDataToHz(data) {
let datasets = data.datasets
for (let dataset of datasets.filter(d => d.label !== 'numberOfNodes')) {
console.log(datasets)
for (let dataset of datasets.filter(d => d.id !== 'numberOfNodes')) {
dataset.data = dataset.data.map(mean => 1000 / mean)
}
}
@ -100,8 +101,8 @@ class WasmVsJsChart extends React.Component {
/**
* Returns the dataset specified by label
*/
function getDataset(data, label) {
return data.datasets.filter(d => d.label === label)[0]
function getDataset(data, id) {
return data.datasets.filter(d => d.id === id)[0]
}
/**
@ -116,20 +117,41 @@ function calculateTimeDelta(whole, arr1, arr2) {
return whole.map((val, i) => val - (safeGet(arr1, i) + safeGet(arr2, i)))
}
function modifyDataArrays(data, exec, pre, after) {
function modifyDataArrays(data, exec, pre, after, newDatasetLabel) {
if (getDataset(data, exec)) {
getDataset(data, exec).data = calculateTimeDelta(
getDataset(data, exec).data,
getDataset(data, pre).data,
getDataset(data, after).data
)
data.datasets.splice(1, 0, {
id: 'execution',
backgroundColor: 'red',
borderColor: 'red',
label: newDatasetLabel,
data: calculateTimeDelta(
getDataset(data, exec).data,
getDataset(data, pre).data,
getDataset(data, after).data
),
stack: 'a'
})
for (let dataset of data.datasets) {
if (dataset.id === exec) {
dataset.label = 'Total execution time'
dataset.stack = 'b'
dataset.backgroundColor = '#ff7a6b'
dataset.borderColor = '#ff7a6b'
}
}
}
}
class WasmStackChart extends React.Component {
render() {
const data = this.props.data
modifyDataArrays(data, 'simplifyWASM', 'storeCoords', 'loadResult')
modifyDataArrays(
data,
'simplifyWASM',
'storeCoords',
'loadResult',
'Simplification'
)
const options = genOptions('Simplify.wasm runtime insights', true)
return (
<>
@ -157,7 +179,8 @@ class JsStackChart extends React.Component {
data,
'origSimplifyWithTransformCase',
'transformToObjectFormCase',
'transformToArrayFormCase'
'transformToArrayFormCase',
'Simplification'
)
return (
<>

View File

@ -1,33 +1,46 @@
import ChartJS from 'chart.js'
function genDataset(label, color, yAxisID = 'performance', type) {
function genDataset(id, label, color, yAxisID = 'performance', type) {
return {
id,
type,
label,
yAxisID,
fill: false,
backgroundColor: color,
borderColor: color,
data: []
data: [],
stack: 'a'
}
}
export const datasetTemplates = {
numberOfNodes: genDataset('# of positions', 'grey', 'nodes', 'line'),
simplifyWASM: genDataset('Simplify.wasm', 'red'),
simplifyJS: genDataset('Simplify.js', 'blue'),
simplifyJSAlt: genDataset('Simplify.js Alternative', 'green'),
storeCoords: genDataset('Store coordinates', 'blue'),
loadResult: genDataset('Load result', 'green'),
numberOfNodes: genDataset(
'numberOfNodes',
'# of positions',
'grey',
'nodes',
'line'
),
simplifyWASM: genDataset('simplifyWASM', 'Simplify.wasm', 'red'),
simplifyJS: genDataset('simplifyJS', 'Simplify.js', 'blue'),
simplifyJSAlt: genDataset(
'simplifyJSAlt',
'Simplify.js Alternative',
'green'
),
storeCoords: genDataset('storeCoords', 'Store coordinates', 'blue'),
loadResult: genDataset('loadResult', 'Load result', 'green'),
origSimplifyWithTransformCase: genDataset(
'origSimplifyWithTransformCase',
'Simplify.js with data transformation',
'red'
),
transformToArrayFormCase: genDataset(
'transformToArrayFormCase',
'Transform result to array format',
'green'
),
transformToObjectFormCase: genDataset(
'transformToObjectFormCase',
'Transform coordinates to object format',
'blue'
)