アプリケーションをプロファイリングする
RubyMine は、 rbspy サンプリングプロファイラーを使用して実行中の Ruby/Rails プロセスをプロファイリングする機能を提供します。 プロファイラーは、アプリケーションの実行に関する情報を収集します。 アタッチされたプロファイラーを使用して Ruby/Rails アプリケーションを実行することも、すでに実行中のプロセスにプロファイラーをアタッチすることもできます。 プロファイリングセッションを停止した後、各メソッド / ブロックに費やされた時間を分析し、パフォーマンスの問題を特定できます。
このトピックでは、プロファイリングセッションを実行または停止して結果を分析する方法について説明します。
前提条件
プロファイリングセッションを開始する前に、 rbspy プロファイラーをお使いのプラットフォームにインストールするには、こちらの手順をご覧ください: rbspy のインストール。 その後は、1.9.1 以降のバージョンのローカル Ruby MRI インタープリターを使用してアプリケーションをプロファイルできます。 ご利用のバージョンがサポートされていない場合は、 rbspy Github リポジトリにイシューを作成してください: https://github.com/rbspy/rbspy/issues。
プロファイリング設定を構成する
プロファイリングセッションを実行する前に、プロファイラーの設定を調整できます。
設定 ダイアログ Ctrl+Alt+S を開きます。
ビルド、実行、デプロイ | Ruby プロファイラー ページに移動して、次のオプションを指定します。
名前 - プロファイラー名を指定します。
RbSpy 実行可能ファイル - rbspy 実行可能ファイルへのパスを指定します。
プロファイル率 - 1 秒間に何サンプルを記録するかを設定します。
プロファイルサブプロセス - プロファイルプロセスのサブプロセスをプロファイルするかどうかを指定します。
このダイアログでは、
ボタンを使用して特定の設定を持つプロファイルを追加することができます。
ボタンは選択されたプロファイルを削除します。
プロファイリングセッションを実行する
RubyMine では、プロファイリングセッションを実行する主な方法が 2 つあります:
付属のプロファイラーを使って Ruby/Rails アプリケーションを実行する
プロファイラーをすでに実行中のプロセスに接続する
以下の手順は、プロファイリングセッションを開始する方法を示しています。
プロファイラーで Ruby スクリプトを実行する
エディターまたはプロジェクトビューでスクリプトを右クリックし、 「スクリプト名 」を「RbSpy プロファイラー」で実行 する」を選択します。
プロファイラでテストを実行する
特定のテストをプロファイリングするには、このテストの隣にある
ボタンをクリックして、 「テスト名 」を「RbSpy プロファイラー」で実行 を選択します。

特定のファイル内のテストをプロファイリングするには、エディターまたはプロジェクトビューでスクリプトを右クリックし、 「テスト名 」を「RbSpy プロファイラー」で実行 を選択します。
特定のフォルダー内のテストをプロファイルするには、プロジェクトビューでこのフォルダーを右クリックして 「RbSpy プロファイラ」で実行 を選択します。
プロファイラを実行中のプロセスに接続する
マシンですでに実行されているプロセスにプロファイラーを接続するには、次の手順を実行します。
メインメニューで 実行 | プロファイラーをプロセスに接続 へ移動します。
ポップアップから必要なプロセスを選択して、 Enter を押します。

プロファイリングセッションを停止する
アプリケーションを停止すると、プロファイリングセッションは自動的に停止します。 プロファイリングセッションを手動で停止するには、次の手順に従います。
プロファイラー ツールウィンドウを開きます。
ボタンをクリックします。
プロファイリングセッションが終了したら、プロファイリング結果を分析できます。
プロファイリング結果を分析する
プロファイリングデータは、 フレームチャート、 呼び出しツリー、 メソッドリスト の 3 つのタブに表示されます。 左側の部分では、指定したスレッドでデータをフィルタリングできます。

フレームチャート
このタブには、コールスタックの状態がいつでも表示されます。 各フレームは、スタック内のメソッド / ブロック(スタックフレーム)を表します。 Y 軸上には、下から上に向かってスタックの深さがあります。 X 軸は最も時間のかかるメソッド / ブロックから最も消費の少ないものへとソートされたスタックを示します。

RubyMine では、さまざまなタイプのフレームに異なる色が使われます:
プロジェクト Ruby メソッド呼び出しのオレンジ。
外部 gems からの Ruby メソッド呼び出しの濃いオレンジ。
ネイティブ C 拡張への呼び出しは青。
フレームチャートを読むときは、最も広いフレームに注目してください。 親フレームから子フレームへのコードフローに従って、下から始めて上に移動できます。 つららチャートを使用する場合は、上から下に参照してください。
結果を分析する
項目の上にマウスを置くと、詳細が表示されます。
チャートをズームイン / ズームアウトするには、ツールバーの Ctrl + マウスホイール または
/
ボタンを使用します。
ボタンを使用して、最初のチャート幅にリセットできます。
グラフをスクロールするには、マウスまたは矢印キーを使用します。
ダブルクリックして特定の方法に移動します。 この場合、チャートは灰色で着色された親メソッドで始まる呼び出しスタックを示しています。
項目を右クリックして ソースに移動 を選択し、対応するコードをエディターで開きます。
項目を右クリックして メソッドリストのメソッドに焦点を当てる を選択し、 メソッドリストタブ内の対応するメソッドへ移動します。
つららチャートに切り替え
つららチャートは、上下が逆になったフレームチャートです。 親フレームから子フレームへのコードフローに従って、このグラフを上から下に読むことができます。
ボタンをクリックします。
呼び出されたリストで、 つららグラフの表示 オプションを有効にします。
呼び出しツリー
呼び出しツリー タブには、プログラム呼び出しツリーが、総プロファイリング時間における各メソッドの割合と共に表示されます。

呼び出しツリービューを設定してフィルタリングするには、 ボタンと
ボタンを使用します。
メソッドリスト
メソッドリスト タブには、サンプル数でソートされたメソッドのリストが表示されます。

リストの各メソッドについて、プロファイラーはネストされたタブに関する詳細情報を提供します。 バックトレース タブには、選択したメソッドが呼び出された場所が表示されます。 マージされた呼び出し先 タブには、選択したメソッドから開始したコールトレースが表示されます。
プロファイリング結果のエクスポートとインポート
結果のエクスポート
メインメニューで 表示 | Tool Windows | プロファイラー に移動し、プロファイラーツールウィンドウを開きます。
左側のツールバーで、
をクリックします。
表示されるダイアログで、ファイルに名前を付けて、保存するフォルダーを指定します。 保存 をクリックしてください。
インポート結果
結果のインポートは、 rbspy を使用して本番サーバーに記録されたプロファイリング結果を分析する場合に役立ちます。
ファイルからプロファイリング結果をインポートするには、メインメニューから 実行 | プロファイラー結果のインポート | ファイルから を選択します。
