mayoko’s diary

プロコンとかいろいろ。

ISUCON 8 予選に参加しました

ISUCON8 の予選に参加しました。

詳しい記事は我らがリーダー(?)が書いています
brookbach.com

とりあえず僕も書くかっていうだけ書いておきます。
今回は"前半戦は"座るだけではなかったので良かった(多分一番おいしいところを持っていった)

本番の流れ

僕はサーバーの設定ファイルとかよくわからない(えぇ…)のでそこらへんは任せて最初からアプリの実装を見たりデータベースの仕様を確認したりしていました。
で, get_event 関数がクソ遅そうだったのでそれの報告と改善方法を言ったら「やって~」と言われたので実装

実装内容

  • 各 sheet 毎に SQL を呼び出しているのが遅そうなので一回のクエリですべての情報を引き出すように変更
    • 具体的には SELECT * FROM reservations WHERE event_id = ${id} みたいな感じのクエリを呼び出せば, イベントごとの sheet 情報が引き出せる
  • sheet 情報は固定なので "ベタ書き"(???)

okeigo 君が開発用サーバーも用意してくれてたのでそっちでテストしてましたが, 7, 8 回書き直したので自分の実装力の NASA を感じる
でも 14:00 くらいに実装出来たのでベンチ通したらスコアが 600 点 -> 3000 ~ 5000 点くらいになってテンションが上がった

get_event 周りの所感

  • twitter 見ると「get_event 改善で 15000 点は行く」と言ってる人がいるんですがそうなんですかね…
    • 前提として 3 台構成にしてるとかサーバーのパラメータをいい感じに調整してるとかがあるからなのか
    • python が遅いからなのか

~競技終了まで

これ終わった後は特に改善できそうなところがよくわからなかったので終わり

  • 他の 2 人が改善していたっぽい
  • データベースの reservations に event_id, user_id, sheet_id の外部キー登録すると改善するのかなーと思ったけどパッとうまくいかなかったし, データベース変更しちゃったらどうしようという不安に襲われたのでやめた

最終的には 8000 点くらいだったっぽく, 予選落ち

  • 残念

まとめ

UNDERTALE はいいぞ!
undertale.jp
(PVだけ見るとオススメしづらそうなのやめろ)