与标准的if-else语句相比,?:运算符有什么好处和缺点.显而易见的是:
有条件的?:运营商
标准If/Else
根据声明,可读性似乎各不相同.在第一次接触到?:运算符后的一段时间内,我花了一些时间来精确地消化它是如何工作的.您是否会建议尽可能使用它,或者坚持if/else,因为我与许多非程序员一起工作?
我正在查看一些带有巨大的switch语句和每个case的if-else语句的代码,并立即感受到优化的冲动.作为一个优秀的开发人员,我总是应该着手获得一些硬性时序事实,并从三个变体开始:
原始代码如下所示:
public static bool SwitchIfElse(Key inKey, out char key, bool shift)
{
switch (inKey)
{
case Key.A: if (shift) { key = 'A'; } else { key = 'a'; } return true;
case Key.B: if (shift) { key = 'B'; } else { key = 'b'; } return true;
case Key.C: if (shift) { key = 'C'; } else { key = 'c'; } return true;
...
case Key.Y: if (shift) { key = 'Y'; } else { key …Run Code Online (Sandbox Code Playgroud)c# performance if-statement conditional-operator micro-optimization
我正在浏览一些代码,我发现了一些三元运算符.这段代码是我们使用的库,它应该非常快.
我在想,除了那里的空间,我们还要保存任何东西.
你有什么经历?
说到PHP,我想问一下这两者在性能上有没有区别:
$name=($IsBoy)?"George":"Mary";
Run Code Online (Sandbox Code Playgroud)
对比
if($IsBoy)
{
$name="George";
}
else
{
$name="Mary";
}
Run Code Online (Sandbox Code Playgroud)
这两个会导致不同的操作码吗?
如果是,性能上会有什么理论上的差异吗?(当然忽略这两个需要读/编译/解释的时间)
如果是,那么像 zend 优化器这样的优化器是否会利用这一点并自动进行任何重新安排?
ps 如果您认为我的“全长手” if-then-else 代码太复杂,请提供一个最基本的代码示例并对此进行回答。
更新:
我希望这个问题非常清楚,但似乎人们没有得到这个信息。这个问题是关于性能上的理论(......但真实和可测量的)差异(这就是我在理论中应用粗体和斜体的原因)。请不要回答说哪种编程风格更具可读性,而且这太吹毛求疵而不必担心性能。
ps 2:通过强调“理论”这个词,我试图避免“别担心它不值得麻烦,它只是几纳秒”类型的答案。
简单的问题(我认为):这些代码中的哪些代码在C#中执行得更快?
newSpeed = newSpeed > maxSpeed ? maxSpeed : newSpeed;
Run Code Online (Sandbox Code Playgroud)
要么
if (newSpeed > maxSpeed)
{
newSpeed = maxSpeed;
}
Run Code Online (Sandbox Code Playgroud)