]> git.codecow.com Git - nano-pow.git/commitdiff
Replace some minimums, divisions, and multiplications with comparisons and bitshifts.
authorChris Duncan <chris@codecow.com>
Thu, 21 May 2026 14:43:38 +0000 (07:43 -0700)
committerChris Duncan <chris@codecow.com>
Thu, 21 May 2026 14:43:38 +0000 (07:43 -0700)
src/lib/generate/webgl/index.ts
test/index.html

index 53c59a466f063d154668e50a9dc72dbf01e6619a..be68b928ea2696bfcb9c7e240ca6d83b000dc6d9 100644 (file)
@@ -95,14 +95,14 @@ function createCanvas (size: number): void {
        LOG: logger.log('NanoPow WebGL createCanvas', 'requested size', size)
        LOG: logger.log('NanoPow WebGL createCanvas', 'MAX_VIEWPORT_DIMS', MAX_VIEWPORT_DIMS)
        size = Math.min(size, ...MAX_VIEWPORT_DIMS)
-       size = Math.floor(size / 0x100) * 0x100
+       size = (size >>> 8) << 8
        canvas.height = canvas.width = size
        LOG: logger.log('NanoPow WebGL createCanvas', 'canvas size', canvas.height, canvas.width)
        LOG: logger.log('NanoPow WebGL createCanvas', 'drawingBuffer size', gl.drawingBufferHeight, gl.drawingBufferWidth)
        if (canvas.height !== gl.drawingBufferHeight
                || canvas.width !== gl.drawingBufferWidth
        ) {
-               size = Math.floor(Math.min(gl.drawingBufferHeight, gl.drawingBufferWidth) / 0x100) * 0x100
+               size = ((gl.drawingBufferHeight < gl.drawingBufferWidth ? gl.drawingBufferHeight : gl.drawingBufferWidth) >>> 8) << 8
                canvas.height = canvas.width = size
        }
        LOG: logger.log('NanoPow WebGL createCanvas', 'final size', size)
@@ -232,7 +232,7 @@ function setup (effort: number): void {
        try {
                reset()
                drawEffort = effort
-               createCanvas(drawEffort * 0x100)
+               createCanvas(drawEffort << 8)
                compile()
        } catch (err) {
                reset()
index 5ada24b77d2dbef33f825c7cce2791c021467e70..e147d2b08d4f14bafe46668bfe2817b102713a4d 100644 (file)
@@ -31,7 +31,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
                        const MAX_VIEWPORT_DIMS = gl.getParameter(gl.MAX_VIEWPORT_DIMS)
                        canvas.height = MAX_VIEWPORT_DIMS?.[0] ?? 0x1000
                        canvas.width = MAX_VIEWPORT_DIMS?.[1] ?? 0x1000
-                       return Math.min(gl.drawingBufferHeight, gl.drawingBufferWidth)
+                       return gl.drawingBufferHeight < gl.drawingBufferWidth ? gl.drawingBufferHeight : gl.drawingBufferWidth
                })(new OffscreenCanvas(0, 0))
 
                function random (size = 64) {
@@ -45,9 +45,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
                function average (times, type, effort) {
                        const averages = stats(times)
                        const title = type === 'WebGPU'
-                               ? `NanoPow (${type}) | Effort: ${effort} | Dispatch: ${(0x100 * effort) ** 2} | Threads: ${64 * (0x100 * effort) ** 2}`
+                               ? `NanoPow (${type}) | Effort: ${effort} | Dispatch: ${(effort << 8) << 1} | Threads: ${64 * (effort << 8) << 1}`
                                : type === 'WebGL'
-                                       ? `NanoPow (${type}) | Effort: ${effort} | Work per frame: ${Math.min(0x100 * effort, glSize) ** 2}`
+                                       ? `NanoPow (${type}) | Effort: ${effort} | Work per frame: ${Math.min(effort << 8, glSize) << 1}`
                                        : `NanoPow (${type}) | Effort: ${effort}`
                        return {
                                [title]: averages