gpt4 book ai didi

c# - 算法效率 : Should I use Equal (==) or Not Equal (! =) 运算符?

转载 作者:行者123 更新时间:2023-11-30 20:50:24 28 4
gpt4 key购买 nike

我想知道以下两个选项中哪一个在速度方面最有效。它们之间可能只有很小的区别(或者根本没有区别?)但是由于我每天使用该代码片段 30 次,所以我想知道这里的“最佳实践”是什么 :)

选项 1:

if (sender != null)
LabelSave.Text = "Saved";
else
LabelSave.Text = "Auto-Saved";

选项 2:

if (sender == null)
LabelSave.Text = "Auto-Saved";
else
LabelSave.Text = "Saved";

请不要考虑“sender”变量的值,这里真正的问题是“c# 中“!=”和“==”之间最快的运算符是什么?”

最佳答案

sender == nullsender != null 这两个比较花费相同的时间*。

最佳做法是使用最易读或最易理解的内容,这取决于具体情况。

例如:

if (condition) {
...
lots_of_code();
...
return;
}
short_code();
return;

如果写成这样的话,可以说更具可读性:

if (!condition) {
short_code();
return;
}
...
lots_of_code();
...
return;

在第二个版本中,更多代码位于较低级别的范围内,因此通常更容易理解。


*注意:如果您正在运行这种检查数百万次并且它确实成为一个性能问题(不太可能),您需要稍微了解一下编译器的工作原理。大多数编译器采用类似的东西:

if (condition) {
do_something();
} else {
do_other_thing();
}
return;

并生成如下指令:

    evaluate condition
jump_if_false ELSECODE
do_something()
return

ELSECODE:
do_other_thing()
return

condition 为真时跳过跳转通常比在条件为假时执行跳转稍微便宜一些。不过,这取决于在 if 语句之后立即执行的操作。编译器通常会尝试在编译时猜测哪个分支更有可能并相应地安排代码,而 CPU 可能会在运行时进行分支预测以无论如何以不同的方式优化它。对于某些语言/编译器,您可以提示 条件 极有可能或极不可能。

99.99% 的时间你应该完全忽略这一点,但在极少数情况下它变得很重要(例如,如果你试图编写操作系统或模拟器的一部分,或嵌入式设备的某些东西)。

关于c# - 算法效率 : Should I use Equal (==) or Not Equal (! =) 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com