よくあるような、
if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
  c == '_' ) {
 ・・・
}
の部分を、条件jmp文が少しでも少なくなるようにと思って、
予め作成しておいたテーブル(配列)を使って、
if ( eiji_or_underscore[c] != 0 ) {
 ・・・
}
として実測してみたところ、何度計測しても後者の方が遅くなった。
アセンブリコードを見てみても、前者だと5つの条件jmp命令、後者だと1つの条件jmp命令と、
後者の方が命令数が少なくっていた。しかし、前者だと、レジスタとcmp命令を使っていたが、
後者だとグローバル変数の配列を読み出しに行っていた。

最近のCPUは非常に複雑で高度な「分岐予測」をしていて、配列は読み出してみないと
値が分からないので、「予測」ができず、分岐予測の「予測間違い」がおきるが、
レジスタをcmpで比較する場合には予測が出来るためだろうか。

しかし、昔より最適化する際にどっちが高速になるかの予想が難しくなってしまってる。