2013-10-07

ISUCONで予選敗退してきました

去年に引き続き、元D(…eNAではない)社の同僚と3人で組んで参加してきました。

メンバー構成がPerl*2,PHP*1 なので、今年はPerlで行く事に。
(去年はPerl,Ruby,PHPが1ずつでしたが、1人宗旨変えしたようです)
3人の得意分野がそれなりに分かれてはいるものの、やっぱりかぶってるなーとか、全体観を持って見るところが不足していたなー、というのが…

作戦としては、プロファイラを入れてボトルネックを見て、重いところを潰すというオーソドックスな感じ。
あとは、重そうなところは勘で。DBにインデックス貼ったりとか。
全部書き換えるみたいなことをする余裕はなく…

いろいろやりましたが、一番効果があったのは、
「markdownで変換する奴、どうせ有限個しか来ないよね!」
「じゃあmarkdownでの変換結果を静的にもっとこうぜ」
というところでした。

何をやったかというと、markdown前のデータからハッシュを取って、hash=>markdownの結果、という情報をRedisにぶち込むようにしてみました。
で、あったらそれを返す、なかったら作る、という感じ。
そしてこのRedis君は、ベンチマーク毎に内容を捨てない、というのがポイント。
その結果、なにも改善点がなくてもベンチマークを回すたびにスコアが上がるという素晴らしいことに…!
最終的にはヒット率90%くらいまで行きました。

結論
お疲れ会で行った鳥政、おいしゅうございました。