UNPKG

nano-pow

Version:

Proof-of-work generation and validation with WebGPU/WebGL for Nano cryptocurrency.

99 lines (90 loc) 7.23 kB
<!-- SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev> SPDX-License-Identifier: GPL-3.0-or-later --> # Benchmarks to compute 16,777,216 nonces _Each test is 128 samples of one pass (dispatch or frame) at zero difficulty with no early exit_ ## Summary - Chromium WebGPU and Firefox WebGL are the clear winners - Chromium WebGL seems to suffer from an Nvidia driver issue - Firefox WebGPU exhibits a strange implementation bottleneck - It seems to restricts each pass to a minimum of 200ms - Not shown here: This minimum is higher or lower depending on dispatch size - Safari WebGPU performance was maintained between versions - WebGL downsampling shader minimized readback lag and thus enabled much larger frames - WebGPU improved dramatically on non-mobile platforms, almost halving frame times - Maximum WebGL canvas size varies - Safari only supports up to 4096x4096 - Chromium supports up to 5760x5760 - Firefox supports up to a whopping 8192x8192 which actually makes it competitive with WebGPU ## All Results | Version | System | Browser | API | Total | Rate | Median | Mean | |-----------|--------------|-------------|-----------|-----------|----------|----------|----------| | RC | RTX 3070 | Chromium N | WebGPU | 747 | 218.23 | 4.5 | 4.58 | | RC | RTX 3070 | Firefox N | WebGL | 1096 | 117.06 | 8.55 | 8.54 | | RC | RTX 3070 | Firefox | WebGL | 1174 | 116.57 | 9 | 8.58 | | 2.0.0 | RTX 3070 | Chromium N | WebGPU | 1339 | 112.02 | ? | 10.47 | | RC | Intel Xe | Chromium N | WebGPU | 5107 | 25.20 | 39.5 | 39.69 | | RC | Intel Xe | Firefox | WebGL | 7166 | 18.84 | 52 | 53.07 | | RC | Intel Xe | Firefox N | WebGL | 8060 | 16.71 | 63 | 59.83 | | RC | iPhone 12 | Safari | WebGPU | 8586 | 14.97 | 67 | 66.79 | | 2.0.0 | iPhone 12 | Safari | WebGPU | 8765 | 14.69 | 68 | 68.48 | | RC | Intel Xe | Chromium N | WebGL | 9764 | 15.42 | 62.8 | 64.85 | | 2.0.0 | Intel Xe | Chromium N | WebGPU | 10103 | 12.63 | ? | 78.93 | | RC | RTX 3070 | Chromium N | WebGL | 10681 | 19.81 | 50.60 | 50.47 | | RC | iPhone 12 | Safari | WebGL | 12631 | 10.54 | 95 | 94.86 | | RC | iPad Mini 5 | Safari | WebGPU | 14232 | 8.78 | 114 | 113.85 | | 2.0.0 | iPad Mini 5 | Safari | WebGPU | 14903 | 8.59 | 118 | 116.41 | | RC | iPad Mini 5 | Safari | WebGL | 18928 | 6.97 | 145 | 143.40 | | RC | Intel Xe | Firefox N | WebGPU | 25679 | 4.99 | 200 | 200.47 | | 2.0.0 | Intel Xe | Firefox N | WebGPU | 25805 | 4.94 | ? | 201.60 | | 2.0.0 | RTX 3070 | Firefox N | WebGPU | 25629 | 4.97 | ? | 200.23 | | RC | RTX 3070 | Firefox N | WebGPU | 25633 | 5.00 | 200 | 200.15 | | 2.0.0 | RTX 3070 | Firefox | WebGL | 35224 | 3.72 | ? | 275.19 | | 2.0.0 | RTX 3070 | Chromium N | WebGL | 47603 | 3.06 | ? | 371.90 | | 2.0.0 | RTX 3070 | Firefox N | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | Intel Xe | Firefox | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | Intel Xe | Firefox N | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | Intel Xe | Chromium N | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | iPhone 12 | Safari | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | iPad Mini 5 | Safari | WebGL | Unusable | N/A | ? | N/A | ## RTX 3070 | Version | Browser | API | Total | Rate | Median | Mean | |-----------|-------------|-----------|-----------|----------|----------|----------| | RC | Chromium N | WebGPU | 747 | 218.23 | 4.5 | 4.58 | | RC | Firefox N | WebGL | 1096 | 117.06 | 8.55 | 8.54 | | RC | Firefox | WebGL | 1174 | 116.57 | 9 | 8.58 | | 2.0.0 | Chromium N | WebGPU | 1339 | 112.02 | ? | 10.47 | | RC | Chromium N | WebGL | 10681 | 19.81 | 50.60 | 50.47 | | 2.0.0 | Firefox N | WebGPU | 25629 | 4.97 | ? | 200.23 | | RC | Firefox N | WebGPU | 25633 | 5.00 | 200 | 200.15 | | 2.0.0 | Firefox | WebGL | 35224 | 3.72 | ? | 275.19 | | 2.0.0 | Chromium N | WebGL | 47603 | 3.06 | ? | 371.90 | | 2.0.0 | Firefox N | WebGL | Unusable | N/A | ? | N/A | ## Intel Xe integrated graphics | Version | Browser | API | Total | Rate | Median | Mean | |-----------|-------------|-----------|-----------|----------|----------|----------| | RC | Chromium N | WebGPU | 5107 | 25.20 | 39.5 | 39.69 | | RC | Firefox | WebGL | 7166 | 18.84 | 52 | 53.07 | | RC | Firefox N | WebGL | 8060 | 16.71 | 63 | 59.83 | | RC | Chromium N | WebGL | 9764 | 15.42 | 62.8 | 64.85 | | 2.0.0 | Chromium N | WebGPU | 10103 | 12.63 | ? | 78.93 | | RC | Firefox N | WebGPU | 25679 | 4.99 | 200 | 200.47 | | 2.0.0 | Firefox N | WebGPU | 25805 | 4.94 | ? | 201.60 | | 2.0.0 | Firefox | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | Firefox N | WebGL | Unusable | N/A | ? | N/A | | 2.0.0 | Chromium N | WebGL | Unusable | N/A | ? | N/A | ## iPhone 12 (A14 Bionic, ??? 4-core GPU) | Version | Browser | API | Total | Rate | Median | Mean | |-----------|-------------|-----------|-----------|----------|----------|----------| | RC | Safari | WebGPU | 8586 | 14.97 | 67 | 66.79 | | 2.0.0 | Safari | WebGPU | 8765 | 14.69 | 68 | 68.48 | | RC | Safari | WebGL | 12631 | 10.54 | 95 | 94.86 | | 2.0.0 | Safari | WebGL | Unusable | N/A | ? | N/A | ## iPad Mini 5 (A12 Bionic, G11P 4-core GPU) | Version | Browser | API | Total | Rate | Median | Mean | |-----------|-------------|-----------|-----------|----------|----------|----------| | RC | Safari | WebGPU | 14232 | 8.78 | 114 | 113.85 | | 2.0.0 | Safari | WebGPU | 14903 | 8.59 | 118 | 116.41 | | RC | Safari | WebGL | 18928 | 6.97 | 145 | 143.40 | | 2.0.0 | Safari | WebGL | Unusable | N/A | ? | N/A |