Help us understand the problem. What is going on with this article?

IntelliJ IDEAのプロファイラを使ってみた

GMOアドマーケティングのT.Oです。

IntelliJ IDEA Ultimateでプロファイラを使ってみましたので利用手順についてご紹介します。
お手軽に使用できます:grinning:

●前提
開発環境としてmac版のIntelliJ IDEA Ultimate 2019.3を利用します。
注1) IntelliJのプロファイラはUltimate版のみで使用可能です
注2) 現時点ではプロファイラの機能はtomcatなどのアプリケーションサーバーには使えません

1.プロファイラ機能の有効化

IntelliJのメニューから「Preference→Build,Execution,Deployment→Profilers→Java Profiler」を選択します。「+」ボタンを押して「CPU Profiler」, 「Allocation Profiler」を追加します。
profiler_p1.png

プロファイラを実行するためのボタンが追加されます。
profiler_p2.png

2.プロファイラを使う

2.1. CPUプロファイラ

プロファイラを実行するボタンのうち、「Run 'xxxxx' with CPU Profiler」を選択します。プログラムが実行された後に、画面の「Profiler」タブを選択するとプロファイラーツールウィンドウが表示されます。収集されたデータがフレームグラフ、コールツリー、メソッドリストの3つのタブに表示されます。

2.1.1. フレームグラフ

CPUの消費時間の割合に比例した幅で呼び出されたスタックのフレームが表示されます。オレンジの部分がプログラムで記述された部分の呼び出しによって消費されているところ、ブルーの部分がコンパイル時間などで消費されているところになっているようです。
profiler_cpu_p1.png
消費時間の割合が多いところを調査したい場合は、フレームを選択した状態でメニューを表示して「Jump To Source」を選ぶとそのフレームの部分に該当するプログラムソースに移動することができます。
profiler_cpu_p1-2.png

2.1.2. コールツリー

プログラムの呼び出しスタックに関する情報(メソッド名、合計CPU消費時間の割合など)が表示されます。
左端の矢印は階層表示になっていて、選択するとより詳細に確認することができます。
profiler_cpu_p2.png

2.1.3. メソッドリスト

実行されたメソッドが累積のCPU消費時間の割合の多い順に表示されます。それぞれのメソッドを選択した状態で下部の「Back Traces」を選ぶと、呼び出し元になっているメソッドを確認することができます。
profiler_cpu_p3.png

2.2. アロケーションプロファイラ

プロファイラを実行するボタンのうち、「Run 'xxxxx' with Allocation Profiler」を選択します。プログラムが実行された後に、画面の「Profiler」タブを選択するとプロファイラーツールウィンドウが表示されます。
収集されたデータがフレームグラフ、コールツリー、メソッドリストの3つのタブに表示されます。

2.2.1. フレームグラフ

メモリ消費の割合に比例した幅で呼び出されたスタックのフレームが表示されます。メモリ消費量が多いところを調査したい場合は、フレームを選択した状態でメニューを表示してメニューから「Jump To Source」を選ぶとそのフレームの部分に該当するプログラムソースに移動することができます。
profiler_allocation_p1.png

2.2.2. コールツリー

プログラムの呼び出しスタックに関する情報(メソッド名、合計メモリ消費量の割合など)が表示されます。
profiler_allocation_p2.png
左端の矢印は階層表示になっていて、選択するとより詳細に確認することができます。
profiler_allocation_p3.png

2.2.3. メソッドリスト

実行されたメソッドが累積のメモリ量で多い順に表示されます。それぞれのメソッドを選択した状態で下部の「Back Traces」を選ぶと、呼び出し元になっているメソッドを確認することができます。
profiler_allocation_p4.png

参考

執筆にあたり以下を参考にさせていただきました。
プロファイリング・ツール - 公式ヘルプ | IntelliJ IDEA

明日は、@CodeDiggerMさんによる「機械学習で欠損値の対応法」です。
引き続き、GMOアドマーケティング Advent Calendar 2019をお楽しみください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした