LoginSignup
0
1

More than 5 years have passed since last update.

ISUCON8で予選突破しました

Last updated at Posted at 2018-09-20

ISUCON8の予選突破できました の補足投稿です。
こちらの記事に大まかな流れは書いてあるので、自分のやった部分について補足します。

コード修正でやったこと

中陳:気になる処理の時間計測とループ処理の改善

最初、何か計測ツールでも入れようかと思いましたが、準備もしていなくて面倒だったのでやめました。
いったんget_event関数に改善ポイントを絞っていたので、その部分だけに処理時間をテキストに出力するようにしました。
どのAPIリクエストによるget_eventの呼び出しかを出力されるようにしました。
ベンチマークを流して、多く出力されているAPIリクエストについて改善をしていこうと決めました。

中陳:/api/users/{id}のget_event周りを改修

「石川:データの更新のない情報(sheets)をハードコード化」で作成していたメソッドを利用して、この部分も改善しました。

中陳:get_eventを改修
sheets分SQLが発行されていたのを予約されているsheetsを先に取得することでSQLの問い合わせを削減

ループ内でSQLが発行されていて、ここは重いと分かっていたので、ここを改善することにしました。
最初の修正後、failになるためいったんリバートしてSQLを見直すことにしました。
元のSQLのようにGROUP BYとHAVINGを使ったSQLにしていましたが、GROUP BYとHAVINGを使わないSQLにして、プログラム側で処理をするようにしました。

感想

中盤で初期スコアからそこまで上がっていない中、他のチームが数万点までいっていて、今回は正直だめかなとモチベーションが下がっていました。
後半徐々にスコアが上がっていき、予選突破できてほっとしました。思った以上の結果がでて良かったです。
やはり地道な改善が大切なんだなと考えさせられました。
本戦は初参加なので頑張りたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1