<!--
SPDX-FileCopyrightText: 2025 Chris Duncan <chris@codecow.com>
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    |
