在 OCaml 5 / macOS / arm64 下异常缓慢的循环(25 倍)

主要观点:在 macOS Ventura 13.6.7 系统下,带有 Apple M2 Max 处理器的设备上,OCaml 5 中向整数数组写入值的循环比 OCaml 4 慢约 20 倍,使用Array.setArray.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.gitcd array_set_loopmake test
  • 展开循环后的情况:安全点_caml_call_gc每 5 次迭代执行一次,猜测调用过于频繁会导致变慢。
    重要细节:OCaml 5.0、5.1、5.2 版本均有类似结果,各基准测试的时间均值、标准差、用户时间、系统时间及运行次数等具体数据。
阅读 28
0 条评论