主要观点:在 macOS Ventura 13.6.7 系统下,带有 Apple M2 Max 处理器的设备上,OCaml 5 中向整数数组写入值的循环比 OCaml 4 慢约 20 倍,使用Array.set
与Array.unsafe_set
差异不大,手动展开循环(5 次)可消除此慢速现象。
关键信息:
- 系统及处理器信息:macOS Ventura 13.6.7 与 Apple M2 Max 处理器。
- 不同版本 OCaml 的测试结果对比:OCaml 4 时各情况正常,OCaml 5 时出现异常,如循环慢等。
- 重现问题的代码:
git clone git@github.com:fpottier/array_set_loop.git
,cd array_set_loop
,make test
。 - 展开循环后的情况:安全点
_caml_call_gc
每 5 次迭代执行一次,猜测调用过于频繁会导致变慢。
重要细节:OCaml 5.0、5.1、5.2 版本均有类似结果,各基准测试的时间均值、标准差、用户时间、系统时间及运行次数等具体数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。