回答
这取决于你在比较什么,但对于内置类型,两者通常只是一个机器指令。
很少有任何明显的差异。如果你正在考虑这种优化,我敢打赌,你没有优化正确的事情。
对于非内建类型,你可以重载无论是运营商,如你所愿:
如果class Foo
{
public:
bool operator<=(const Foo &other) const
{
}
bool operator<(const Foo &other) const
{
}
};
所以比较操作是你可以优化你的运营商和<=
可以用不同的方式来计算应用程序的瓶颈然后拨打<
和==
这个答案的重点是? – 2012-07-11 11:39:28
@AlexeyFrunze:关键是<=可以通过另一种方式实现,然后调用<和== – Andrew 2012-07-11 11:44:12
这是值得详细阐述和写在答案,我认为。 – 2012-07-11 11:45:52
号<=
是基本相同>
一个额外NOT和>=
相同<
用NOT。 (哪些,如果有的话,有额外的不,我不确定,但他们在硬件水平基本上是一样的。)
在大多数处理器中,结果将是一个比较指令,它在条件代码中设置一些标志,然后在条件代码上设置一个条件跳转条件代码。不管比较结果如何,我不知道任何需要额外的处理器的情况;他们都有对应所有六个运营商的条件跳转运营商。 – 2012-07-11 15:11:59
这假定整数类型或类似。对于浮点,'a <= b'与''不一样! (A> B)'。例如,如果'a'是NaN,前者是假的,但后者是真的。 – 2012-07-12 14:05:47
- 1. 优化<xsl:choose>许多<xsl:when>
- 2. 使用HTML,而不<>
- 3. 使用<OBJECT>而不是<IFRAME>和Internet Explorer
- 4. 为什么YouTube等使用<object>而不是<iframe>?
- 5. 为什么IIS Express使用<system.web>而不是<system.webServer>?
- 6. 为什么使用string_view而不是泛化的container_view <T>?
- 7. List <>循环优化
- 8. $(e.target)是<i></i>而不是包含<div>...</div>
- 9. 使用'<< 1'而不是'* 2'有没有优势?
- 10. 为什么<textarea>显示<>而不是< >?
- 11. 在C++中使用<string,string>或<string,char>映射而不是<char, char>
- 12. 我想使PHP的工作<? ?>而不是<?php ?>
- 13. 在freemarker中使用双标签而不是非双标签可以吗?如<#else />而不是<#else>?
- 14. 使用C++计算执行时间,而不是使用<time.h>
- 15. IDictionary是IEnumerable <ValueType>而不是KeyValue?
- 16. 我为什么要使用TCollections.CreateList <T>而不是TList <T>。创建
- 17. 为什么要在EmberJS中使用{{#link-to}}而不是<a></a>?
- 18. Php问答如何使用<select><option>而不是收音机?
- 19. XSD:使用Visual Studio xsd.exe不生成Array []而不是List <>
- 20. 有BeautifulSoup输出<br>而不是<br/>
- 21. 如何获得<class'numpy.str'>而不是<class'numpy.object _'>
- 22. 为什么它IEnumerable.Empty <T>()而不是IEnumerable <T> .Empty()?
- 23. FileHelperEngine返回列表<object>而不是List <T>
- 24. Collections.sort()声明:为什么<? super T>而不是<T>
- 25. 返回无极< void >,而不是承诺<any>
- 26. PHP的作品<?php ?>而不是<? ?>
- 27. requests.get返回<!doctype>而不是<Response>
- 28. JAXB XJC创建列表< Objects >而不是List < String >
- 29. 返回ICollection <T>而不是列表<T>的真正优势是什么?
- 30. <值暂时不可用,由于优化> CFArrayGetValueAtIndex
它是你的瓶颈? – Andrew 2012-07-11 11:20:56
这更像是他的好奇心和完美主义,这是相当不错的。 – 2012-07-11 11:27:51
@DesmondHume:我不同意这里。如果你想写汇编器学习指令并且知道细节,如果你想用更高级的语言编写,让编译器/优化器来完成它的工作。如果两个表达式中的一个比另一个表达式昂贵,编译器可以按照程序员可以将其转换为另一个。其优点是编译器**确实知道表达式的成本以及在生成的代码上下文中的重要程度。编译器在优化细节方面通常会比普通程序员做得好得多。 – 2012-07-11 12:29:01