2017-08-14 42 views
2

我想知道两个选项之间有什么区别。起初我认为他们会产生相同的输出,但我已经使用第一个{.checks:off.}和更高版本-d:release来描述代码,其差别是显着的(发布速度更快)。Nim检查:关vs -d:release

在这种情况下的代码是一个热循环与一些浮动操作,一个如果和数组获取/设置。

回答

2

-d:release也使优化器(这会做一些额外的工作,例如删除assert),这将导致代表它的速度增加。这些标志描述为here

4

这里是释放的作用: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" 
+0

那么,什么是无效的检查呢?我的印象是,它会禁用每个* _checks选项。在我的情况下,可能'检查:关'没有禁用绑定检查 – Agggg