![]() |
1
5
您应该检查调试生成中的边界。 如果您确信您的代码是正确的(因此,您已经进行了代码检查并对其进行了广泛的测试),那么为了性能起见,可以在发布版本中不进行边界检查。 如果要在调试生成中测试边界,而不是在发布生成中,则可能应该在调试生成中使用断言。断言应用于验证总是正确的事情。如果不检查函数内部的边界并且代码正确,则该值永远不应超出边界。 |
![]() |
2
4
在登记处登记。当您有一个正在运行的程序时,您可以对其进行分析,并找出您可能在哪些地方进行更改,这些更改实际上有助于提高性能。那些地方可能根本不是你所期望的。 |
![]() |
3
3
如果
通常完美的工具是在类方法中使用assert()来检查契约是否满足。然后,您将在
|
![]() |
4
2
如果该类在应用程序代码(仅在一个应用程序中使用的代码)中, 测量 性能增益是否相关,然后决定是否在释放模式下删除he检查。(让它们处于调试模式。) 如果该类在库代码中,则由设计决定。你想让你的班级 尽可能安全 或 尽快 ? 既然这是图形代码,您可能需要后者。(这也在以速度为目标的STL中流行起来。) |
![]() |
5
1
我认为根本不做边界检查不是一个好办法。
如果你关心性能,在这种情况下至少使用
|
![]() |
6
1
你得先决定哪个是真的。我会说写两个版本,并首先测量性能差异。或者更好的方法是,编写带有检查、测量和决定性能是否低于您的期望/需求的版本。如果是,那么就开始优化。我想在这一点上,为了性能而取消边界检查(如果可以证明它的性能更高,足以做出显著贡献)可能会成为一个更容易、更明智的选择。 如果决定删除边界检查,则按合同设计:-) |
![]() |
7
1
你为什么要
当来电者试图使用
|
![]() |
8
1
合同设计,埃菲尔和“面向对象的软件构造,Myer”一书都会说,你应该将这种超出范围的问题定义为你可以从最终产品中编译出来的断言。断言定义了整个系统的数学确定性。 |
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 7 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |