Performance

Read hashrate without confusing it with device utilization.

Calculate a rate

Hashrate divides completed attempts by elapsed time. This example calculates a rate from two illustrative measurements. It does not benchmark the device or read the live desk.

JavaScript
function hashesPerSecond(attempts, elapsedMs) {
  if (!Number.isFinite(attempts) || attempts < 0 ||
      !Number.isFinite(elapsedMs) || elapsedMs <= 0) {
    throw new RangeError('Use non-negative attempts and positive elapsed time.');
  }
  return attempts / (elapsedMs / 1000);
}

console.log(hashesPerSecond(500000, 2500)); // 200000
console.log(hashesPerSecond(0, 1000));     // 0

Power is a setting

The desk inserts pauses between batches. Increasing Power changes the work/rest balance; it does not promise a matching percentage of GPU utilization. Lower Power if you want the browser to leave more room for other work.

Compare like for like

Compare the same engine, Power setting, browser, and device state. Let startup finish before reading the rate. A CPU result and a GPU result describe different execution paths.

A rate is not a countdown

Hashrate measures work, not how soon a valid candidate must appear. Another application using the graphics device, device sleep, and background tabs can change the observed rate.