【问题标题】:Read and compare vs Rewrite efficiency in C#在 C# 中读取和比较与重写效率
【发布时间】:2013-08-05 17:35:00
【问题描述】:

问题是,重写变量是否比读取比较更有效?

假设您有以下代码:

代码 1

int x = 0;

for( int i = 1; i <= 10000; i++ )
{
    x = 333;
}

代码 2

int x = 0;

for( int i = 1; i <= 10000; i++ )
{
    if( x != 333 )    
        x = 333;
}

哪种代码更高效?

【问题讨论】:

    标签: performance time-complexity processing-efficiency


    【解决方案1】:

    读取和写入都需要一个处理器周期(或者甚至更少,具体取决于处理器架构):因此第二个选项的“效率”稍低一些,因为它将导致 200,001 次操作(100,000 次增量,100,000比较和一个赋值)比第一个,它将执行 200,000 次操作(100,000 次增量和 100,000 次赋值)。

    不过有一点问题。您的编译器可能会认识到第一个循环的无意义,并将其优化为将 333 分配给变量 x。它将完全消除循环以及重复的相同分配。因此,将有一个,而不是 200,000 次或 200,001 次。

    【讨论】:

    • 谢谢!当我写这个问题时,我正在考虑一个更复杂的问题,比如保证一个对象始终具有某些值,即使它们被另一个例程更改。问题是另一个例程是别人的代码,所以问题不是微不足道的。
    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多