【发布时间】:2011-01-15 01:00:41
【问题描述】:
我正在检查以确保浮点数不为零。浮点数不可能变为负数。那么这个float != 0.0f 还是这个float > 0.0f 更快?
谢谢。
编辑:是的,我知道这是微优化。但这每次都会在我的游戏循环中被调用,无论如何我都想知道。
【问题讨论】:
-
浮点数可以是负数。它们也可能在零附近呈片状。
-
微优化这个词浮现在脑海!
-
如果存在差异,可能会非常小,以至于您永远不会注意到差异。您是否分析过您的代码并发现这种特殊的比较是性能瓶颈?如果存在差异,也很可能是特定于体系结构和 CPU 的。您确定如果该值为零,那么它将完全为零吗?请记住,浮点计算通常是不精确的。除非您明确设置
f = 0.0f;,否则您需要考虑计算错误。 -
@Jay:如果它们可以为零,那么它们很有可能是负数。即使数学上说它们应该等于 0,但浮点运算的现实意味着它可以非常接近于零,但在负数方面。
-
@Jay:作为一个游戏开发者,我要告诉你,如果你不知道如何确定要使用哪个版本,那么你的游戏就没有足够的高性能 需要知道。 始终编写最干净的代码。 永远不要编写“最快”的代码,因为在您拥有干净、可运行的程序之前,这无关紧要。你要快吗?
int main() {}。我保证这比你能写的任何东西都快。 “但它什么都做不了!”为快速而不是正确而编写的损坏代码也不是。
标签: c++ c performance comparison floating-point