- 449 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:51:05 ]
- 昔、if (x || y || z) よりも if ((x | y | z) != 0) の方が
速くなる可能性がある(コメント必須)という話があったが if (memcmp(p, "924", 3) != 0) より if (p[0] != '9' || p[1] != '2' || p[2] != '4') より if ((p[0] ^ '9' | p[1] ^ '2' | p[2] ^ '4') != 0) の方が 速くなる可能性もあるのかな。(コメント絶対必須で) もちろん、ショートサーキットの起こる率によっても違うだろうが。 まあ、このケースに限れば(バスエラーが起きない状況なら) if (*(DWORD *)p & *(DWORD *)"\xFF\xFF\xFF" == *(DWORD *)"924") の右2つを整数定数に変えたものが最速か。 もちろん、このコードは移植性も無いし可読性もない 最悪のコードではあるのだが。
|

|