{
  "schemaVersion": 1,
  "generatedAt": "2026-09-24T05:18:37.929Z",
  "environment": {
    "node": "v24.18.0",
    "platform": "win32 10.0.26200 (x64)",
    "cpu": "AMD Ryzen 5 5500                               ",
    "logicalCores": 12
  },
  "methodology": {
    "samplesPerCase": 7,
    "targetSampleMs": 250,
    "warmupIterations": 3000,
    "scope": "Repeatedly call each default roll API with the same notation and read a numeric total. Internal caches may avoid parsing after warmup. No 3D rendering, network or startup time.",
    "randomSources": "Dice Core defaults to crypto.getRandomValues. The three comparison packages use their default random generators."
  },
  "cases": [
    {
      "id": "d20",
      "notation": "1d20",
      "label": "Single d20",
      "min": 1,
      "max": 20,
      "libraries": [
        {
          "id": "dicecore",
          "name": "@erpg/dicecore",
          "version": "3.7.1",
          "iterationsPerSample": 9180,
          "medianOpsPerSecond": 27853,
          "samplesMs": [
            329.59,
            333.78,
            315.84,
            407.81,
            307.18,
            287.06,
            358.29
          ]
        },
        {
          "id": "rpg-dice-roller",
          "name": "@dice-roller/rpg-dice-roller",
          "version": "5.5.1",
          "iterationsPerSample": 23642,
          "medianOpsPerSecond": 154642,
          "samplesMs": [
            138.69,
            113.41,
            141.69,
            168.89,
            156.71,
            160.47,
            152.88
          ]
        },
        {
          "id": "randsum",
          "name": "@randsum/roller",
          "version": "4.0.0",
          "iterationsPerSample": 27926,
          "medianOpsPerSecond": 108360,
          "samplesMs": [
            228.68,
            225.84,
            246.6,
            315.9,
            310.8,
            258.96,
            257.71
          ]
        },
        {
          "id": "dice-roller-parser",
          "name": "dice-roller-parser",
          "version": "0.1.8",
          "iterationsPerSample": 84289,
          "medianOpsPerSecond": 317270,
          "samplesMs": [
            244.64,
            241.46,
            260.85,
            308.68,
            293.06,
            265.67,
            287.05
          ]
        }
      ]
    },
    {
      "id": "modifier",
      "notation": "2d6+3",
      "label": "Two dice and a modifier",
      "min": 5,
      "max": 15,
      "libraries": [
        {
          "id": "dicecore",
          "name": "@erpg/dicecore",
          "version": "3.7.1",
          "iterationsPerSample": 7637,
          "medianOpsPerSecond": 25175,
          "samplesMs": [
            337.36,
            303.36,
            264.79,
            336.63,
            270.52,
            261.41,
            314.08
          ]
        },
        {
          "id": "rpg-dice-roller",
          "name": "@dice-roller/rpg-dice-roller",
          "version": "5.5.1",
          "iterationsPerSample": 20275,
          "medianOpsPerSecond": 76302,
          "samplesMs": [
            301.59,
            306.47,
            265.72,
            286.41,
            238.5,
            264.92,
            243.1
          ]
        },
        {
          "id": "randsum",
          "name": "@randsum/roller",
          "version": "4.0.0",
          "iterationsPerSample": 8811,
          "medianOpsPerSecond": 41482,
          "samplesMs": [
            251.15,
            274.25,
            199.8,
            220.15,
            212.4,
            201.32,
            185.43
          ]
        },
        {
          "id": "dice-roller-parser",
          "name": "dice-roller-parser",
          "version": "0.1.8",
          "iterationsPerSample": 35650,
          "medianOpsPerSecond": 200771,
          "samplesMs": [
            203.85,
            200.99,
            165.54,
            196.47,
            175.17,
            159.89,
            177.57
          ]
        }
      ]
    },
    {
      "id": "keep",
      "notation": "4d6kh3",
      "label": "Keep three highest of four",
      "min": 3,
      "max": 18,
      "equivalentNotation": {
        "randsum": "4d6L"
      },
      "libraries": [
        {
          "id": "dicecore",
          "name": "@erpg/dicecore",
          "version": "3.7.1",
          "iterationsPerSample": 6375,
          "medianOpsPerSecond": 20177,
          "samplesMs": [
            257.75,
            260.51,
            307.99,
            315.95,
            365.59,
            380.28,
            537.79
          ]
        },
        {
          "id": "rpg-dice-roller",
          "name": "@dice-roller/rpg-dice-roller",
          "version": "5.5.1",
          "iterationsPerSample": 28711,
          "medianOpsPerSecond": 110317,
          "samplesMs": [
            260.26,
            230.86,
            229.73,
            286.86,
            307.59,
            337.48,
            252.36
          ]
        },
        {
          "id": "randsum",
          "name": "@randsum/roller",
          "version": "4.0.0",
          "iterationsPerSample": 11530,
          "medianOpsPerSecond": 32240,
          "samplesMs": [
            340.37,
            306.74,
            291.91,
            389.04,
            401.01,
            395.31,
            357.63
          ]
        },
        {
          "id": "dice-roller-parser",
          "name": "dice-roller-parser",
          "version": "0.1.8",
          "iterationsPerSample": 48629,
          "medianOpsPerSecond": 196802,
          "samplesMs": [
            245.41,
            242.64,
            233.88,
            247.1,
            332.58,
            273.92,
            339.19
          ]
        }
      ]
    },
    {
      "id": "pool",
      "notation": "10d6",
      "label": "Ten-die pool",
      "min": 10,
      "max": 60,
      "libraries": [
        {
          "id": "dicecore",
          "name": "@erpg/dicecore",
          "version": "3.7.1",
          "iterationsPerSample": 6401,
          "medianOpsPerSecond": 23561,
          "samplesMs": [
            314.62,
            263.75,
            249.86,
            306.49,
            271.68,
            292.54,
            267.61
          ]
        },
        {
          "id": "rpg-dice-roller",
          "name": "@dice-roller/rpg-dice-roller",
          "version": "5.5.1",
          "iterationsPerSample": 53606,
          "medianOpsPerSecond": 162339,
          "samplesMs": [
            325.05,
            319.78,
            341.65,
            339.54,
            330.21,
            344.16,
            316.59
          ]
        },
        {
          "id": "randsum",
          "name": "@randsum/roller",
          "version": "4.0.0",
          "iterationsPerSample": 26157,
          "medianOpsPerSecond": 104461,
          "samplesMs": [
            260.3,
            250.4,
            247.18,
            259.95,
            232.38,
            239.37,
            261.81
          ]
        },
        {
          "id": "dice-roller-parser",
          "name": "dice-roller-parser",
          "version": "0.1.8",
          "iterationsPerSample": 64267,
          "medianOpsPerSecond": 246363,
          "samplesMs": [
            256.14,
            259.52,
            244.38,
            276,
            260.86,
            270.38,
            307.06
          ]
        }
      ]
    },
    {
      "id": "mixed",
      "notation": "3d8+2d6",
      "label": "Mixed die sizes",
      "min": 5,
      "max": 36,
      "libraries": [
        {
          "id": "dicecore",
          "name": "@erpg/dicecore",
          "version": "3.7.1",
          "iterationsPerSample": 7363,
          "medianOpsPerSecond": 25300,
          "samplesMs": [
            296.57,
            281.95,
            281.89,
            291.03,
            298.29,
            286.37,
            301.91
          ]
        },
        {
          "id": "rpg-dice-roller",
          "name": "@dice-roller/rpg-dice-roller",
          "version": "5.5.1",
          "iterationsPerSample": 25487,
          "medianOpsPerSecond": 82256,
          "samplesMs": [
            337.6,
            434.98,
            296.55,
            305.47,
            321.77,
            309.85,
            296.45
          ]
        },
        {
          "id": "randsum",
          "name": "@randsum/roller",
          "version": "4.0.0",
          "iterationsPerSample": 14164,
          "medianOpsPerSecond": 61013,
          "samplesMs": [
            220.22,
            263.18,
            222.11,
            232.15,
            252.13,
            237.47,
            228.57
          ]
        },
        {
          "id": "dice-roller-parser",
          "name": "dice-roller-parser",
          "version": "0.1.8",
          "iterationsPerSample": 28219,
          "medianOpsPerSecond": 148960,
          "samplesMs": [
            174.93,
            189.74,
            200.15,
            176.08,
            215.57,
            189.44,
            182.3
          ]
        }
      ]
    }
  ],
  "compiledCore": {
    "notation": "4d6kh3",
    "iterationsPerSample": 8302,
    "medianOpsPerSecond": 28094,
    "samplesMs": [
      274.17,
      279.23,
      294.8,
      318.97,
      295.51,
      327.99,
      310.67
    ]
  },
  "seededCore": {
    "notation": "4d6kh3",
    "randomAlgorithm": "xoshiro128ss",
    "seed": "benchmark-seed",
    "iterationsPerSample": 29564,
    "medianOpsPerSecond": 96121,
    "samplesMs": [
      307.57,
      284.15,
      295.68,
      342.81,
      350.56,
      368.57,
      291.43
    ]
  },
  "checksum": 75380440
}