什么会更快:添加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;
答案 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)
但是由于时钟频率以千兆赫为单位并不重要,这几乎可以忽略不计,并且编译器会在编译时重新组装您的代码,这是在优化版本中。