Raymond Chen在他最近关于代码优化的帖子中有这样的说法......明显的优化 - 一个需要优化的优化 - 如果考虑所有需要考虑的话,往往会"去优化"...
在您了解更多信息后,我确信您必须遇到/甚至编码优化您感到尴尬...
小心分享?
Duff的设备,它是如此扭曲,看起来它甚至不应该在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); }
我最喜欢的例子是XOR交换算法:
// 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;
是的,它不使用临时变量,通常可以在三个处理器周期内完成,但确实不明显它的作用!
我最喜欢的是
// original code int a[10]; a[5] = 3; // optimized code int a[10]; *(a + 5) = 3;
是的,突然间,这神奇地加快了!!