1d20一颗 d20
- @erpg/dicecore9,180 次掷骰 / 样本27,853 ops/s
- @dice-roller/rpg-dice-roller23,642 次掷骰 / 样本154,642 ops/s
- @randsum/roller27,926 次掷骰 / 样本108,360 ops/s
- dice-roller-parser84,289 次掷骰 / 样本317,270 ops/s
ERPG Dice / Benchmarks
比较相同表达式下的功能和完整掷骰吞吐量。每项速率均有可复现的测试和明确限制。
在五项简单性能测试中,对比库更快。上方数字是一项实测中位数,并非市场领先声明。完整结果与限制见下文。
01 / 功能
Dice Core 将丰富的表达式与游戏系统结果及结构化事件日志相连。下表比较公开 API,同时区分不同的结果结构。
| 功能 | Dice Core v3.7.1 | RPG Dice Roller ↗ | RANDSUM ↗ | Dice Roller Parser ↗ |
|---|---|---|---|---|
| 骰子表达式 | 高级表达式及四种游戏系统 API | 丰富的骰子表达式 | RDN Level 4;19 种修饰符 | Roll20 风格表达式 |
| 随机数来源 | 默认加密随机源;种子与绑定计划的重放 | 默认 Math.random;可配置加密源或带种子的 MT | 自定义 randomFn,支持种子或加密 RNG | 默认 Math.random;可注入随机函数 |
| 结果结构 | 骰子、分组、事件日志和重放元数据 | 掷骰结果与历史记录 | 初始及最终结果,附带描述 | 结果对象与独立解析 API |
Core 列对应 v3.7.1。竞品描述来自其公开 API 文档,可能与性能测试锁定版本独立变化。
02 / Dice Core · 性能
每次操作使用相同表达式调用公开掷骰 API 并读取总值。内部缓存保持启用。数值越高越快;每个场景内的条形图使用相同刻度。
1d202d6+34d6kh3RANDSUM 使用等价的 4d6L 表达式丢弃最低的一颗骰子。
10d63d8+2d6测量日期 2026年9月24日 · AMD Ryzen 5 5500 · Node.js v24.18.0 · win32 10.0.26200 (x64)
03 / 测试方法
我们锁定包版本,仅测试每个引擎都支持的表达式。每个场景先预热、验证结果,再计时七次。每个包的迭代次数单独校准,使每次采样约为 250 毫秒;最终公布中位数。
04 / Dice Core
这两项独立实验展示预编译和随机源选择如何影响同一项 4d6kh3 掷骰。由于操作或随机性不同,它们不计入市场排名。
在计时循环外编译 4d6kh3,再使用默认随机源执行该计划。
使用缓存表达式,并省去获取新加密种子的过程。重复使用同一种子,因此结果是重复的确定性序列,而非独立随机掷骰。
05 / 如何解读数据
完整的 Dice Core 结果包含结构化骰子、分组、事件历史和重放元数据。对比包返回不同结构。预热后 Dice Core 会缓存重复表达式。测试使用各包默认 API,只读取总值;并未统一结果深度、缓存行为、功能或随机源成本。
在 Node.js 中对五种常见且有界的表达式重复调用公开掷骰 API。
浏览器行为、包加载、内存、大型或爆炸骰、特定系统规则及 Dice View 的 3D 帧。
Dice Core 默认使用 crypto.getRandomValues;各对比包使用自己的默认随机源。这会影响耗时。
Dice Core 在此环境中每秒完成数万次掷骰,但另外三个库在这些基础吞吐量测试中领先。请按游戏所需的规则、结果结构和集成方式选择引擎。
06 / 资料来源
完整方法与实现位于本站仓库的 scripts/benchmarks/README.md 和 benchmark.mjs。
实际应用
比较测试数据,再探索这些库如何用于 RPG 体验。