- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个项目,我需要尽可能优化我的代码,因为正常编译运行需要几个小时。
有人告诉我使用 Flambda,但我在互联网上没有找到任何关于如何将它与 dune 一起使用的信息。
我将不胜感激按照说明/资源阅读。
最佳答案
Flambda 是编译器的一项配置功能,默认禁用(截至 2022 年 1 月)。要使用它,您需要安装启用此功能的编译器版本。使用 opam 很容易,例如,
opam switch create myswitch ocaml-variants.4.13.1+options ocaml-option-flambda
它将使用 4.13.1
版本的 OCaml 编译器创建一个新开关,并启用 flambda 功能。一般语法是,
opam switch create <switch-name> ocaml-variants.<version>+options <options>...
您可以启用多个选项,请参阅 opam search ocaml-option
了解所有选项。
在您安装了 OCaml 的 flambda 版本后,它将默认使用 flambda 优化(但请确保您使用的是发布版本,因为默认调试版本禁用了一些优化,包括跨模块优化)。另外,像往常一样,不要忘记使用 eval $(opam env)
激活您的开关。
flambda 编译器有许多配置选项,它们完全是 described in the manual .您可以对它们进行试验,以在编译时间和应用程序性能之间找到一些折衷。您可以使用 flags 设置选项节,例如,(flags (:standard -rounds 5))
。您可以设置flags globally as well .一旦找到完美的标志集,您甚至可以使用它们来编译上游依赖项,使用 OCAMLPARAM
环境变量。使用此环境变量,您可以更改优化参数,而不会干扰其他包的构建脚本,例如,
export OCAMLPARAM='_,rounds=5,O3=1,inline=100,inline-max-unroll=5'
# opam install your deps
关于optimization - 如何在 ocaml 中将 Flambda 与沙丘一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70665781/
我是一名优秀的程序员,十分优秀!