|
|
|
@ -95,7 +95,9 @@ function runLoaded(funcName, inputTextField, outputTextField) {
|
|
|
|
|
|
|
|
|
|
// run the wasm
|
|
|
|
|
outputTextField.value = ""
|
|
|
|
|
const before = performance.now()
|
|
|
|
|
const outputLocation = wasmInstance.exports[funcName]()
|
|
|
|
|
const after = performance.now()
|
|
|
|
|
|
|
|
|
|
// Read the output
|
|
|
|
|
const outputBuffer = wasmBuffer.slice(outputLocation)
|
|
|
|
@ -106,12 +108,15 @@ function runLoaded(funcName, inputTextField, outputTextField) {
|
|
|
|
|
const outputBytes = outputSmallArray.slice(4, 4 + outputLength)
|
|
|
|
|
const outputText = textDecoder.decode(outputBytes)
|
|
|
|
|
outputTextField.value = outputText
|
|
|
|
|
|
|
|
|
|
return after - before
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
daySelector.value = ""
|
|
|
|
|
inputTextArea.value = ""
|
|
|
|
|
outputTextArea1.value = ""
|
|
|
|
|
outputTextArea2.value = ""
|
|
|
|
|
output.innerText = "Ready"
|
|
|
|
|
|
|
|
|
|
getDayList().then(() => {
|
|
|
|
|
daySelector.addEventListener('change', ev => {
|
|
|
|
@ -121,6 +126,20 @@ getDayList().then(() => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
runButton.addEventListener('click', ev => {
|
|
|
|
|
runLoaded('part1', inputTextArea, outputTextArea1)
|
|
|
|
|
runLoaded('part2', inputTextArea, outputTextArea2)
|
|
|
|
|
let part1run = null, part2run = null
|
|
|
|
|
try {
|
|
|
|
|
part1run = runLoaded('part1', inputTextArea, outputTextArea1).toFixed(2)
|
|
|
|
|
} catch { }
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
part2run = runLoaded('part2', inputTextArea, outputTextArea2).toFixed(2)
|
|
|
|
|
} catch { }
|
|
|
|
|
|
|
|
|
|
if (part1run && part2run) {
|
|
|
|
|
output.innerText = `success; part 1 runtime: ${part1run}ms, part 2 runtime: ${part2run}ms`
|
|
|
|
|
} else if (part1run) {
|
|
|
|
|
output.innerText = `partial success; part 1 runtime: ${part1run}ms, part 2: crashed`
|
|
|
|
|
} else {
|
|
|
|
|
output.innerText = `partial success; part 1: crashed, part 2 runtime: ${part2run}ms`
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|