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) { convertDataToHz(data) {
let datasets = data.datasets 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) dataset.data = dataset.data.map(mean => 1000 / mean)
} }
} }
@ -100,8 +101,8 @@ class WasmVsJsChart extends React.Component {
/** /**
* Returns the dataset specified by label * Returns the dataset specified by label
*/ */
function getDataset(data, label) { function getDataset(data, id) {
return data.datasets.filter(d => d.label === label)[0] 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))) 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)) { if (getDataset(data, exec)) {
getDataset(data, exec).data = calculateTimeDelta( data.datasets.splice(1, 0, {
getDataset(data, exec).data, id: 'execution',
getDataset(data, pre).data, backgroundColor: 'red',
getDataset(data, after).data 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 { class WasmStackChart extends React.Component {
render() { render() {
const data = this.props.data const data = this.props.data
modifyDataArrays(data, 'simplifyWASM', 'storeCoords', 'loadResult') modifyDataArrays(
data,
'simplifyWASM',
'storeCoords',
'loadResult',
'Simplification'
)
const options = genOptions('Simplify.wasm runtime insights', true) const options = genOptions('Simplify.wasm runtime insights', true)
return ( return (
<> <>
@ -157,7 +179,8 @@ class JsStackChart extends React.Component {
data, data,
'origSimplifyWithTransformCase', 'origSimplifyWithTransformCase',
'transformToObjectFormCase', 'transformToObjectFormCase',
'transformToArrayFormCase' 'transformToArrayFormCase',
'Simplification'
) )
return ( return (
<> <>

View File

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