C#或任何其他语言如何不等于操作员执行
你好哪一个更快
int a = 100;
//First Way
if (a != 100)
{
//Do something when a is not equal to 100
}
else
{
//Do something when a is equal to 100
}
//Second Way
if (a == 100)
{
//Do something when a is equal to 100
}
else
{
//Do something when a is not equal to 100
}
我认为第二种方法更快,但我很好奇知道如何解决不等于(!=)运算符。 它是否像首先实现平等(==)操作,然后结果被否定为!(a == 100)? 任何帮助将被高度讽刺。
两者之间没有任何区别。 对于int
,它全部归结为x86上的两条汇编指令之一:
je
- 如果平等就跳 jne
- 跳转不等于 这些或任何jxx
指令都需要相同的时间。
另见我的与你的问题有关的其他答案。
既然你真的很在乎,我建议你自己测试一下。 写出两个循环,一个使用==
,另一个使用!=
。 然后使用System.Diagnostics.Stopwatch
它们进行计时,方法是将它们包装在对Start()
和Stop()
调用中。 然后比较。 通过循环迭代次数足够多(以尽量减少上下文切换,中断等其他时序错误),您将看到没有任何区别。
我认为在二元层面上,这是一个单一的操作(不要引用我),所以两者几乎都是一样的。
也就是说,如果你试图在这个层次上进行优化,那么你做错了什么。 这不是装配。
在我看来,一般来说,NOT EQUAL操作(!=)应该比EQUAL(==)更快,因为只要存在某个块值,NOT EQUAL操作就会返回结果(它基于您的操作系统是32位或64位左右)不相等。
在你的情况下,2个操作应该更快相等,因为100是4个字节的整数。
我认为2运营商没有相同的实施。
链接地址: http://www.djcxy.com/p/31569.html上一篇: How C# or any other language NOT Equal to operator performs