c# - 三元?运算符与 C# 中的传统 If-else 运算符

标签 c# if-statement ternary-operator

<分区>

Possible Duplicate:
Is the conditional operator slow?

我是 C# 中 ? 运算符的大量用户。然而,我的项目经理经常警告我,与大型应用程序中的 If-Else 语句相比,使用 ? 运算符可能会降低一些性能。所以我被告知要避免使用它。但是,我喜欢使用它,因为它简洁明了,而且可以保持代码整洁。

使用?操作符会有这样的性能开销吗?

最佳答案

我运行了 1 亿个三元运算符和 1 亿个 If-Else 语句,并记录了每个语句的性能。这是代码:

Stopwatch s = new Stopwatch();
// System.Diagnostics Stopwatch
int test = 0;
s.Start();
for(int a = 0; a < 100000000; a++)
    test = a % 50 == 0 ? 1 : 2;
s.Stop();

s.Restart();
for(int b = 0; b < 100000000; b++)
{
    if(b % 50 == 0)
        test = 1;
    else
        test = 2; 
}
s.Stop();

这是结果(在 Intel Atom 1.66ghz 和 1gb ram 上运行,我知道,它很糟糕):

  • 三元运算符:每个运算符 5986 毫秒或 0.00000005986 秒。

  • If-Else:每个语句耗时 5667 毫秒或 0.00000005667 秒。

不要忘记我运行了 1 亿次,我认为两者之间 0.00000000319 秒的差异并不重要。

关于c# - 三元?运算符与 C# 中的传统 If-else 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11643137/

相关文章:

c# - 点后只保留两位小数

c - 两个 If 表达式之间的区别?

dart - 如何在 flutter dart 中使用具有多个条件的三元运算符?

coldfusion - 三元运算符爆炸

c++ - For 循环条件(整数 vector )。如何获取之前的值?

c - 使用三元运算符的表达式

c# - 如何在表单应用程序中显示控制台输出/窗口?

c# - 调用 C# 应用程序形成非托管 C 应用程序

c# - 无法初始化类型 'int' 错误

javascript - 使用 if 语句检查是否为 NaN