在运行透析器独立运行时,它用HiPE编译其模块,以加快分析速度:
dialyzer --src -r .
Checking whether the PLT /home/foo/.dialyzer_plt is up-to-date... yes
Compiling some key modules to native code... done in 0m12.27s
Proceeding with analysis...
当有许多模块需要分析时,这会对运行时产生很大的影响。
Rebar3在运行rebar3 dialyzer
命令时会这样做吗?文档并不是这么说的。
发布于 2017-05-14 19:52:06
正如Dogbert在注释中提到的那样,rebar3中的默认设置是使用源格式。本机有一个挂起的拉请求(https://github.com/erlang/rebar3/pull/1493),以便在可用时切换到HiPE格式,但是在rebar3的上下文中,非本地版本基准测试的速度更快,到目前为止我们还没有将其合并。
我刚刚更新了在那里的公关讨论,看看它是否能够被包括,即使在默认情况下没有启用。
发布于 2019-10-04 16:30:07
回到这个问题之后,Erlang/OTP 22.0.6已经从Dialyzer中删除了HiPE编译特性,因此Rebar3无法激活该特性。来自发布公告
OTP-15949 Application(s): dialyzer, hipe
*** POTENTIAL INCOMPATIBILITY ***
The HiPE compiler would badly miscompile certain
try/catch expressions, so it will now refuse to compile
modules containing try or catch.
As a consequence of this, dialyzer will no longer
compile key modules to native code.
此外,根据这个邮件列表线程,HiPE将在Erlang/OTP 24中完全删除。这是在此拉请求做的。
https://stackoverflow.com/questions/43934929
复制相似问题