性能方法与局限
一条性能结论只有附带六件事才有意义:负载、数据规模、CPU 与线程设置、环境、统计量与噪声处理方式。本页说明仓库里的数字是如何产生的,以便读者判断或复现。
测量方式
成对基准在同一台机器上交替运行固定的 Python 参考实现与原生候选实现,并为被测子进程绑定一个 CPU:
每次测量都是一个子进程:在
CreateProcess/fork之前收窄其亲和性,启动后校验,因此父进程的调度选择不会渗入测量。墙钟区间从创建子进程之前开始,到子进程退出结束,因此解释器启动与加载时间都计入两侧测量。
预热运行被排除;观察者(摘要捕获、计数器)在停止时钟之后运行,唯一例外是分配计数器 —— 它的原子操作在测量调用内部触发。
CPU 时间与峰值工作集来自操作系统的进程记账,而不是自报。
正确性是门禁,不是另一份报告:运行期间产出的研究表会先按摘要比对通过,计时才会被采纳。
配对交替进行并用中位数汇总,因此单次慢跑不会变成头条数字。无法与噪声区分开的评估记为 INCONCLUSIVE,而不是四舍五入成加速比。
这些数字怎么读
结果 |
解读 |
|---|---|
Alpha003 500 文件开发批的 41.20x |
该负载的墙钟比,五次测量配对,同一 CPU |
1,000 / 2,000 文件诊断对的 34.46x / 35.63x |
比值随规模变化;这是独立的诊断对,不是门禁 |
峰值工作集 |
单独报告;更快但内存占用高得多的运行不是免费的胜利 |
摘要一致 |
每个被采纳的计时运行同时也复现了参考表 |
x 倍数是一个负载在一台主机上的墙钟时间比。它不是对所有 API、对整个语料库或对另一台机器的结论。
复现一次测量
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel --target fincore_alpha003_research
python benchmarks/alpha003_a_stocks/run_benchmark.py --help
基准源码与数据准备步骤已提交;生成的 HTML 报告与 CSV 载荷不入库。驱动器的 --help 给出支持的配对数、容差上限与输出位置,并保持默认 --tolerance(必须是有限值且不超过 1e-6)。
局限与诚实的空白
测量在单台桌面级机器上完成,只绑定一个核心;不暗示云或容器环境下的结论。
噪声环境会产出 INCONCLUSIVE 的评估记录。这些记录留在仓库里;它们不会被汇总成一个稳定的加速比。
内存以峰值工作集报告,这与分配器的存活字节不是一回事;开启分配钩子时原生基准两者都记录。
把物化每个中间行的负载与流式负载相比总会显得悬殊;请先比较输出,再比较时间。
精确的评估记录 —— 配对数、机器、日期与结论 —— 见迭代 9 收尾记录与仓库根目录链接的验收记录。