nano-pow
Version:
Proof-of-work generation and validation with WebGPU/WebGL for Nano cryptocurrency.
99 lines (90 loc) • 7.23 kB
Markdown
<!--
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 |