page_adsence

2017年8月4日金曜日

IntelliJとVisualVMでScalaのベンチマークを取る

Scalaで作っているAPIサーバがあるのですが、自分が作った部分がリリースされた直後、APIのレスポンスが悪くなりアラート連発という事態が発生。
今回のリリースで対象のAPIサーバをいじったのは自分だけ。
しかし、ソースはレビュー済みで、切り戻し後にもう一度確認してみたのですが、誰が見ても特に重そうという処理はしてなさそうという結論に至りました。

そこで、修正前後のベンチマークを取って比べてみようということに。
最初は「sbt-jmh」を使ってベンチマークを取ろうとしたのですが、うまく行かず・・・。
Javaでプロファイルするのに使っていたVisualVMというものがあって、もしかしたらそれでScalaのプロファイルも出来るかもというアドバイスを貰ったので、早速調べてみると比較的最近の記事が出てきました。

Scalaで書いたProcessing のプログラムを VisualVM でプロファイルする

上の記事を見てScalaのプロファイル取れることがわかったので、早速導入してみた。

VisualVMの入手とインストール

  1. VisualVM にアクセス
  2. Download ボタンをクリック
  3. Mac OS X Application Bundleをクリックしダウンロードしてくる
  4. 落としてきたdmgファイルダブルクリックしてインストール

IntelliJのプラグインの入手と設定

  1. Preferences -> Plugins -> Browse repositories -> 検索窓に「VisualVM Launcher」と入力し、「Install」ボタンをクリック
  2. プラグインのインストールが完了すると、「Restart IntelliJ IDEA」ボタンに切り替わるので、IntelliJを再起動する。
  3. Preferences -> Other Settings -> VisualVM Launcher のメニューをクリックし、
    VisualVM executable: に 「/Applications/VisualVM.app/Contents/MacOS/visualvm」 と入力
  4. それ以外の部分はそのままにして、OKをクリック
  5. 通常の「Run」や「Debug」と同じ様に、「Run With VisualVM」か「Debug With VisualVM」を押すと、アプリが起動する。
    ■ Before

    ■ After
  6. メニューの方も変わっている
    ■Before

    ■After
  7. 後は勝手にVisualVMが起動するので、必要な部分を見ればOK

以上で設定は完了です。