一行まとめ: ISUCON4 予選のチーム SHINCHOKU.ZERO の参加記録です。C++(物理)で殴りました。


今日は ISUCON という Web アプリケーションのパフォーマンスチューニングコンテストの予選に出ていました。

僕は nu (id:nu4nu) と二人でチーム SHINCHOKU.ZERO として参加していました。仕事でもプライベートでも RDB すら使っていない素人2人のチームですが、それはそれで勉強にもなるし面白そうかなーと思い、締め切り当日に思い切って参加申し込みをしてみました。

予選問題の題材は Web アプリのログインフォーム。ユーザー名とパスワードの照合をしつつ、同じ IP アドレスやアカウントで何回もログインが失敗した場合はブラックリストをしなければいけません。各種プログラミング言語での参考実装が与えられるので、どれかを改造したり、あるいは自分で一から再実装して、パフォーマンスを最適化しなさいという問題でした。

で、実際にどういう最適化をしたかですが、単にアプリケーションを C++ で再実装しました。はい。

マシンが1台しか使えないし、データ容量が大したことないので、1プロセスで全部オンメモリにデータを乗せられるんですよね。1プロセスで十分なパフォーマンスを出せる言語だと C++, Java, Go あたりが選択肢になるかと思いますが、言語習熟度や宗教上の理由などから C++ を選択しました。しかし C++ で Web アプリケーションを書いたことはなかったので、Web アプリケーションフレームワーク探しから始めて、その場でチュートリアルを読みながら組んでいった感じでした。

デバッグにかなり手間取ってしまって、ちゃんと動いたのが終了15分前。その後はベンチマークの並列数を変えるくらいしかやる暇がありませんでした。もうちょっと最適化っぽいこともしてしてみたかったのですが、まあ仕方がない。

何はともあれ、久しぶりにコンテストモードで後先考えずにコードを書き散らすことが出来て楽しかったです。後で Python とか MySQL を使いながらの最適化もトライしてみたいですね。
Shared publiclyView activity