首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加性能与ORing性能

添加性能与ORing性能
EN

Stack Overflow用户
提问于 2011-04-04 09:23:13
回答 4查看 2K关注 0票数 9

我见过人们在概念上更适合逐位OR的情况下使用加法,因为他们认为这样做更快。这是真的吗?如果是,那么所有的现代编译器都知道这个技巧吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-04 09:30:32

“概念上合适”和“更快”是两件不同的事情。前者是语义,而后者通常涉及破坏语义。

至于标题中的问题,速度上的差异很小(如果有的话)。在实际发生这种情况的情况下,CPU的编译器通常会对其进行优化--如果它不会导致不同的结果,那么它很有可能而且通常也会这样做。

正确编写你的代码--如果你想要OR,那么就是OR。如果add-vs-OR最终更快,要么你的编译器会帮你做,要么你可以在你决定了每次迭代潜在的额外半纳秒是否值得付出可读性成本和这样的改变可能导致的bug之后再改变它。

票数 3
EN

Stack Overflow用户

发布于 2011-04-04 09:27:59

加法和逻辑或都可能在CPU的ALU的类似部分中执行。不太可能有任何可测量的性能差异,但这将在您的情况下进行测量以确定。

编译器不需要为此费心,因为通常只有在操作数是常量的情况下,编译器才能知道加法和ORing会给出相同的结果,在这种情况下,编译器可以在编译时简单地进行算术运算,甚至不需要为它生成代码。

票数 5
EN

Stack Overflow用户

发布于 2011-04-04 09:28:03

事实上,编译器通常足够聪明,能够以某种方式进行适当的替换。这种优化的术语是强度降低,这是书中最古老的技巧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5533724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档