Skip to content

Commit

Permalink
Create 'performance.js' to avoid code duplication
Browse files Browse the repository at this point in the history
  • Loading branch information
marcomontalbano committed Feb 15, 2019
1 parent 17cb05c commit e95c90e
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 35 deletions.
4 changes: 2 additions & 2 deletions src/index.js
Expand Up @@ -84,7 +84,7 @@ benchmarkWorker({
},
times,
value => {
chart_addData(myChart, `${value.data.worker.toUpperCase()} Benchmark`, value.measure.duration);
chart_addData(myChart, `${value.data.worker.toUpperCase()} Benchmark`, value.performance.measure.duration);
console.log(`cycle ${value.data.worker}`, value)
}
).then(value => {
Expand All @@ -99,7 +99,7 @@ document.getElementById('addData').addEventListener('click', () => {
},
1,
value => {
chart_addData(myChart, `${value.data.worker.toUpperCase()} Benchmark`, value.measure.duration);
chart_addData(myChart, `${value.data.worker.toUpperCase()} Benchmark`, value.performance.measure.duration);
console.log(`cycle ${value.data.worker}`, value)
}
).then(value => {
Expand Down
21 changes: 8 additions & 13 deletions src/js/webworker/js.worker.js
@@ -1,21 +1,16 @@

import * as mod from '../mod';
import { measure } from './performance';

onmessage = e => {

performance.mark(`${e.data.method}-start`);
const value = mod[e.data.method](...e.data.args);
performance.mark(`${e.data.method}-end`);

performance.measure(`${e.data.method}-measure`, `${e.data.method}-start`, `${e.data.method}-end`);

const measures = performance.getEntriesByName(`${e.data.method}-measure`);
const measure = measures[measures.length - 1];
const performance = measure(e.data.method, () => {
return mod[e.data.method](...e.data.args)
})

postMessage({
data: { worker: 'js', ...e.data },
value,
measures: measures.map(e => e.toJSON()),
measure: measure.toJSON(),
});
data: { ...e.data, worker: 'js' },
performance
})

}
19 changes: 19 additions & 0 deletions src/js/webworker/performance.js
@@ -0,0 +1,19 @@

export const measure = (name, fn) => {

performance.mark(`${name}-start`);
const fn_return = fn();
performance.mark(`${name}-end`);

performance.measure(`${name}-measure`, `${name}-start`, `${name}-end`);

const measures = performance.getEntriesByName(`${name}-measure`);
const measure = measures[measures.length - 1];

return {
fn_return,
entries: measures.map(e => e.toJSON()),
measure: measure.toJSON(),
}

}
30 changes: 10 additions & 20 deletions src/js/webworker/rs.worker.js
@@ -1,30 +1,20 @@

import wasm from '../../../pkg/wa_vs_js_benchmark_bg.wasm';
import * as _exp from '../../../pkg/wa_vs_js_benchmark';

var importObject = {
'./wa_vs_js_benchmark': _exp
}
import { measure } from './performance';

onmessage = e => {

WebAssembly.instantiateStreaming(fetch(wasm), importObject)
.then(results => {

performance.mark(`${e.data.method}-start`);
const value = results.instance.exports[e.data.method](...e.data.args);
performance.mark(`${e.data.method}-end`);
WebAssembly.instantiateStreaming(fetch(wasm), { './wa_vs_js_benchmark': _exp }).then(results => {

performance.measure(`${e.data.method}-measure`, `${e.data.method}-start`, `${e.data.method}-end`);
const performance = measure(e.data.method, () => {
return results.instance.exports[e.data.method](...e.data.args)
})

const measures = performance.getEntriesByName(`${e.data.method}-measure`);
const measure = measures[measures.length -1];
postMessage({
data: { ...e.data, worker: 'rs' },
performance
})

postMessage({
data: { worker: 'rs', ...e.data },
value,
measures: measures.map(e => e.toJSON()),
measure: measure.toJSON(),
});
});
});
}

0 comments on commit e95c90e

Please sign in to comment.