什么会更快:添加w / loop或w / o循环?

时间:2017-08-22 08:16:32

标签: c# loops optimization

什么会更快:添加w / loop或w / o循环(C#)? 我的意思是

int a=0;
for (int i=1;i<4;i++)
    a+=2*i;

int a=0;
a+=2*1;
a+=2*2;
a+=2*3;

2 个答案:

答案 0 :(得分:1)

对于这种进展,

n |  0 |  1 |  2 |  3 |  4 |  5 
--------------------------------
a |  0 |  2 |  6 | 12 | 20 | 30

封闭的表格是,

a = n(1+n);

这总是比任何蛮力方法更有效。如果效率并不重要,那么封闭形式仍然更容易阅读。

如果你没有时间计算出封闭的表格,除了最短的迭代之外,循环的输入次数较少。这就是为什么我们用语言表达它们,对吧?

答案 1 :(得分:-1)

如果考虑使用的时钟周期数,那么没有环路的实现会更快,因为

int a=0;                   - 1
for (int i=1;i<4;i++)      - 11
    a+=2*i;                (1+11 = 12 clock cycles)

其中

int a=0;                   - 1
a+=2*1;                    - 1
a+=2*2;                    - 1
a+=2*3;                    - 1 (1+1+1+1 = 4 clock cycles)

但是由于时钟频率以千兆赫为单位并不重要,这几乎可以忽略不计,并且编译器会在编译时重新组装您的代码,这是在优化版本中。