「高速化やらしてくれ」って言ったらあっさりやることになった。
とりあえず、3.5倍(当社比)くらい。もともとボトルネックじゃなかったので、多分変わらんと思うけど。そこから先は手出しできないところなので知らん。


富豪な人達は、「汚くて速いコードじゃなくてきれいなコードを書こう」って言うけど、そういうのに騙されてはいけない。大体の場合、きれいなコードというのは速いコードでもある。

  • グローバル変数は使ってはいけません。レジスタ割り付けがうまくいかないです。
  • 同じローカル変数を違う目的で使わないでください。レジスタ割り付けがうまくいかないです。
  • 同じ処理をあちこちに書かないでください。キャッシュ当たりが悪くなります。
  • 読みにくコードにしないでください。どこを高速化したらいいかわからないです。


ぱっと見て汚いコードは、コンパイラの最適化の癖を理解してさえいれば、きれいに書き直すだけで、結構早くなると思う。今日の場合も、汚いのを書き直しただけで、2倍くらいになってたし。
まあ、最後の一歩を踏み出すと、コードは読めなくなっていくと思うけど…

  • 偶然のビットパターンを利用してぐにょぐにょ
  • ところどころの空き時間を利用するために処理を分割
  • インラインアセンブラーーーー

今回はそこまではやらんかった。そんなに変わりそうなところもなかったし。