普段使っている開発コンソール。
僕も試験を受けるまでは、コードの編集・SOQL・Execute Anonymousくらいしか使ったことがなかったんですが、実はパフォーマンス調査のための機能がいくつか備わっていることが分かったので、用意されている機能をここで紐解いてみることにします。
どうやって調査できる?
開発コンソールからパフォーマンス調査するためには、Debug→Open Execute Anonymous Windowから行う。
今回パフォーマンスを測るコードはこんな感じ。
あまりよろしくない作りだが、大量レコードのDML操作と1秒間吐き続けるデバッグログ。
で、結果的には何も変化しないようになっている(笑)
ActionStatusMover.page
SavePoint sp = Database.setSavepoint(); // 1000件分挿入 List<Account> accList = new List<Account>(); for(Integer i=0; i < 1000; i++){ Account a = new Account(); a.Name = 'Hoge' + String.valueof(i); accList.add(a); } insert accList; // 1000件分更新 accList = [Select Id, Name From Account Where id IN :accList]; for(Account a : accList){ a.Name = a.Name + 'x'; } update accList; // 1秒間デバッグログを出し続ける Datetime dt = Datetime.now().addSeconds(1); while(Datetime.now() < dt){ System.debug('Hello!'); } // 1000件分削除 delete accList; Database.rollback(sp);
上記コードを、Open Execute Anonymous Windowから実行していく訳ですが、この時に必ず「Open Log」にチェックを入れて実行しましょう。
これで実行した後、Debug → View Log Panels …からいくつかのチェックボックを選択することができますが、
これがパフォーマンス調査に必要なログやグラフを表示します。
一つずつどのようなログが表示されるのかチェックしましょう。
開発コンソール、早く日本語化してくれないかなぁ
View Log Panelsの各メニュー
Stack Tree
Excution Tree
実行ユニット毎に処理時間とヒープサイズを纏めたもの。
Perfomance Tree
Excution Treeに反復回数の列が加わったもの。
Excution Treeの上位互換なので、Excution Treeは必要ないかも。。。
Execution Stack
実行ユニット毎の処理時間とヒープサイズを一覧にしたもの。
表示が一覧になっただけで、内容はStack Treeと同じ。
Execution Log
こちらはお馴染みのログを表示するコンソール。
Source
実行したメソッド、アクションを一覧表示したもの。
Source List
実行されているApexクラスやSOQLの一覧。
Variables
変数の値をトレースするのに使用されるタブです。
デバッグログレベルのAPEX_CODEがFINESTでないと使えません。
Execution Overview
Save Order
セーブ時の履歴を表示する一覧でしょうか?
正直見方がよくわからないです…
Limits
その名前からガバナ制限の上限を確認できるのかと思いきや、蓋を開けれ見れば設定→ログ→デバッグレベルでやっている内容がそのままこのタブでも確認できるようになっています。
Timeline
各カテゴリ別に処理時間をグラフで可視化したものです。
一目見てグラフの長さから処理時間が分かるため、とても分かりやすいです。
この表示の例だと、Apexで処理が入り、1000件分のレコードをDML操作で処理する場合はDBの部分に時間がかかっているのが分かります。
Executed Units
こちらはメソッドおよびDML操作でどのくらいの時間やヒープサイズを費やしたかを一覧に示したものです。
下のShowボタンでWhat部分の絞り込みも可能です。
まとめ
ざっとみてこんなところです。
全部覚えるのは大変なので、試験対策としては、ヒープサイズ、実行時間が調査できることと、各メニューの名称を覚えておけば大丈夫かと思います。
Paefomance Tree、Timelinet、Executed Unitsあたりは見た目的にも分かりやすいので画面がイメージできるようにしましょう。
コメント