In #160, I wrote code which incorrectly assumed that at most one profile would be active at a time. It turns out this assumption is incorrect because of webworkers! This PR introduces a fix which correctly separates samples taken on the main thread from samples taken on worker threads, and allows viewing both in speedscope. Fixes #171
29 lines
430 B
HTML
29 lines
430 B
HTML
<script>
|
|
function banana() {
|
|
let prod = 1
|
|
for (let i = 1; i < 1000; i++) {
|
|
prod *= i
|
|
}
|
|
return prod
|
|
}
|
|
|
|
function apple() {
|
|
for (let i = 0; i < 1000; i++) {
|
|
banana()
|
|
}
|
|
}
|
|
|
|
let bounces = 0
|
|
|
|
const worker = new Worker('./worker.js')
|
|
|
|
worker.onmessage = function() {
|
|
apple()
|
|
if (bounces++ < 10) {
|
|
worker.postMessage('ping')
|
|
}
|
|
}
|
|
|
|
worker.postMessage('ping')
|
|
</script>
|