这是其他编译器(C#、VC++、GCC)的常见问题。我想知道 Delphi 编译器的相同问题(任何版本;我目前使用的是 2010 和 XE2,很快就会使用 XE4。)
我在编写高性能代码时遇到了一种情况,必须检查条件,但在大多数情况下不需要采取任何措施:
if UnlikelyCondition then
HandleUnlikelyCondition
else
HandleLikelyCondition
end;
对于可能的情况,通常不需要做任何事情:
if UnlikelyCondition then
HandleUnlikelyCondition
else
Exit
end;
我想向编译器提示该if
语句的第二个分支是要优化的分支。我怎么能在德尔福做到这一点?
当前代码
目前,我已经编写了我的代码,假设if
语句的条件等于 true是优化的最佳对象:
if LikelyCondition then
HandleLikelyCondition
else
HandleUnlikelyCondition
end;
或者
if LikelyCondition then Exit;
HandleUnlikelyCondition;
在刚才使用这两个示例中的第一个的测试中,我得到了 50% 的额外性能提升if
,像这样重组我的语句,即假设if
语句的条件是true
. 也许用另一种方式来表达这个问题是,这是我能做的最好的吗?
如果您以前没有遇到过分支错误预测,那么这个史诗般的答案将是一个很有启发性的读物。