<!--
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      |
