diff --git a/benchmark/contour.mjs b/benchmark/contour.mjs index ae3df70..7bb1855 100644 --- a/benchmark/contour.mjs +++ b/benchmark/contour.mjs @@ -1,3 +1,5 @@ +// node --cpu-prof benchmark/contour.mjs + import { readFileSync } from 'fs'; import { join } from 'path' @@ -10,34 +12,47 @@ const __dirname = new URL('.', import.meta.url).pathname; const data = readFileSync(join(__dirname, '../src/__tests__/data/zhmbc_0.jdx'), 'utf8'); const parsed = convert(data, { noContour: true }).flatten[0]; - for (let i = 0; i < parsed.minMax.z.length; i++) { parsed.minMax.z[i] = Float64Array.from(parsed.minMax.z[i]) } +console.log('Size: ', parsed.minMax.z[0].length, 'x', parsed.minMax.z.length); + const conrec = new Conrec(parsed.minMax.z); -const number = 100 +let levels = []; +for (let level = -1e4; level <= 1e4; level += 2e2) { + levels.push(level); +} + +console.log(`We calculate ${levels.length} levels close to zero to be close to noise`); + +let result; -console.time('basic'); -for (let i = 0; i < number; i++) { +if (true) { + console.time('basic'); - conrec.drawContour({ + result = (conrec.drawContour({ contourDrawer: 'basic', - levels: [-100000, 100000], + levels, timeout: 10000, + })); + console.log(result.contours.length) + console.timeEnd('basic'); + const totalNumberContours = result.contours.reduce((acc, contour) => acc + contour.lines.length, 0); + console.log({ totalNumberContours }) +} else { + console.time('shape'); + result = conrec.drawContour({ + contourDrawer: 'shape', + levels, + timeout: 1000000, }); + console.timeEnd('shape'); + // console.log(result) + console.log(result.contours.length) + const totalNumberContours = result.contours.reduce((acc, contour) => acc + contour.lines.length, 0); + console.log({ totalNumberContours }) + } -console.timeEnd('basic'); -if (false) { - console.time('shape'); - for (let i = 0; i < number; i++) { - conrec.drawContour({ - contourDrawer: 'shape', - levels: [-100000, 100000], - timeout: 10000, - }); - } - console.timeEnd('shape'); -} \ No newline at end of file