From: Chris Duncan Date: Thu, 21 May 2026 14:43:38 +0000 (-0700) Subject: Replace some minimums, divisions, and multiplications with comparisons and bitshifts. X-Git-Tag: v5.1.15~1^2~11 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=ba1560db4154b3db135931949885583591d71cad;p=nano-pow.git Replace some minimums, divisions, and multiplications with comparisons and bitshifts. --- diff --git a/src/lib/generate/webgl/index.ts b/src/lib/generate/webgl/index.ts index 53c59a4..be68b92 100644 --- a/src/lib/generate/webgl/index.ts +++ b/src/lib/generate/webgl/index.ts @@ -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() diff --git a/test/index.html b/test/index.html index 5ada24b..e147d2b 100644 --- a/test/index.html +++ b/test/index.html @@ -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