我想知道两个选项之间有什么区别。起初我认为他们会产生相同的输出,但我已经使用第一个{.checks:off.}
和更高版本-d:release
来描述代码,其差别是显着的(发布速度更快)。Nim检查:关vs -d:release
在这种情况下的代码是一个热循环与一些浮动操作,一个如果和数组获取/设置。
我想知道两个选项之间有什么区别。起初我认为他们会产生相同的输出,但我已经使用第一个{.checks:off.}
和更高版本-d:release
来描述代码,其差别是显着的(发布速度更快)。Nim检查:关vs -d:release
在这种情况下的代码是一个热循环与一些浮动操作,一个如果和数组获取/设置。
-d:release
也使优化器(这会做一些额外的工作,例如删除assert
),这将导致代表它的速度增加。这些标志描述为here。
这里是释放的作用:https://github.com/nim-lang/Nim/blob/devel/config/nim.cfg#L50-L66
@if release or quick:
obj_checks:off
field_checks:off
range_checks:off
bound_checks:off
overflow_checks:off
assertions:off
stacktrace:off
linetrace:off
debugger:off
line_dir:off
dead_code_elim:on
@end
@if release:
opt:speed
@end
opt:speed
然后告诉你的C编译器优化速度的输出,例如:
gcc.options.speed = "-O3 -fno-strict-aliasing"
那么,什么是无效的检查呢?我的印象是,它会禁用每个* _checks选项。在我的情况下,可能'检查:关'没有禁用绑定检查 – Agggg