Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goで圧倒的な速度改善をした話

Avatar for secobaka secobaka
October 24, 2024

 Goで圧倒的な速度改善をした話

圧倒的ッ!圧倒的改善ッ!
僥倖ッ!伏魔殿ッッ!

Avatar for secobaka

secobaka

October 24, 2024

More Decks by secobaka

Other Decks in Programming

Transcript

  1. 自己紹介
 千株式会社 ものづくり部 
 コンシューマー開発G フォトEC 
 高倉 輝 (secobaka)
 


    GitHub: https://github.com/secobaka 
 Qiita: https://qiita.com/secobaka 
 
 趣味: 漫才
 youtube: https://www.youtube.com/@友を失った夜 

  2. delveを使う
 - Goで使えるデバッグツール
 - https://github.com/go-delve/delve 
 - ブレークポイントを設定して値やトレー スの確認ができる
 -

    思ってる値が入ってる?を確認 
 - 値がもっとじゃかじゃか入るはずなんだけ どあんまり入ってない? 
 - 思った動きをしてないかも? 

  3. pprofを使う
 - Goで使えるプロファイリングデータの 視覚化ツール
 - https://github.com/google/pprof 
 - どの辺でメモリとか処理時間食ってる の?どこがネックで遅いの?とかがわ

    かる
 - 対象が少ない時は特にめちゃめちゃ重い ところはない
 - 1万件くらいからなんか特定のメソッドがや たらと重くなってる
 - ここに原因があるのでは...? 

  4. Goの言語仕様
 - Goにおける配列の表現方法
 - array
 - 固定長配列
 - var a1

    [5]int - slice
 - 可変長配列
 - var s1 []int - map
 - 連想配列みたいなもの 
 - var m1 map[int]string
  5. 解決方法
 - 一度イベントのsliceをmapに変換して から検索する
 - mapならキーで一発で持ってくることがで きる
 - 計算量はO(n +

    k)
 - イベントの一覧を一度mapに変換(n) 
 - ユーザーが登録しているイベントの slice(k)