热闹[或不那么热闹]代码优化

时间:2008-11-28 00:59:03

标签: optimization

Raymond Chen在他最近的post 代码优化方面有这个说法......明显的优化 - 一个需要优化的优化 - 如果考虑所有需要考虑的事情,往往会“去优化” ......

我确信在您了解更多信息之后,您必须遇到/甚至编码优化...

关心分享?

4 个答案:

答案 0 :(得分:10)

Duff's Device,它是如此扭曲,看起来它甚至不应该在ISO C中编译:

int n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7:      *to = *from++;
case 6:      *to = *from++;
case 5:      *to = *from++;
case 4:      *to = *from++;
case 3:      *to = *from++;
case 2:      *to = *from++;
case 1:      *to = *from++;
           } while (--n > 0);
}

答案 1 :(得分:6)

我最喜欢的例子是XOR swap algorithm

// swap these two values:
int x = 4;
int y = 2;
// original:
int temp = x;
x = y;
y = temp;
// optimized version:
x ^= y;
y ^= x;
x ^= y;

是的,它不使用临时变量,通常可以在三个处理器周期内完成,但确实不明显它的作用!

答案 2 :(得分:5)

我最喜欢的是

// original code
int a[10];
a[5] = 3;

// optimized code
int a[10];
*(a + 5) = 3;

是的,突然间,这神奇地加快了!</sarcasm>

答案 3 :(得分:2)

另见this question