イギリスのRed Gate SoftwareがリリースしたANTS Performance Profiler 8 Betaはウェブリクエスト、非同期コード、Windowsストアアプリのプロファイリングができる製品だ。また、今回のリリースには、SharePoint 2013 のサポートと新しいタイムライン機能が含まれている。これを使えば、アプリケーションの性能を監視するだけでなく、特に詳細に調べたい部分をドリルダウンできる。
ウェブリクエストのプロファイリングを行うと、リクエストとレスポンスのヘッダ情報を含むhttpリクエストをキャプチャできる。今回のリリースでは、C#やVBで書かれたWindows Storeアプリのプロファイルもできる。さらに、JavaScript、HTML5、C++を利用した場合のマネージドコードの状態も監視できる。
今回のリリースはプロファイリングセッションをより高速に起動し、素早く結果を求められるようになっている。さらに、IIS、IIS Express、Web Dev Serverで動作するASP.NETのウェブサイトをプロファイルすることもできる。
InfoQはRed Gate Softwareの.NETツール部門の製品マーケティングマネージャであるBen Emmett氏に今回のリリースの詳細を聞いた。
InfoQ: ANTS Performance Profilerはどのような目的で使われる製品ですか。
ANTS Performance Profilerを使えば性能のボトルネックを見つけ、.NETアプリケーションの性能を理解し改善することができます。開発の各段階で利用できるように設計されているので、性能が要件を満たしているかどうか定期的に確認する場合や、実際に運用しているコードの急いで解決しなければならない性能問題を見つけ出すことができます。
InfoQ: 競合製品との違いは何ですか。
最も難しい性能問題はアプリケーションの一部として切り出すことができないものです。むしろ、システムの異なる部分のやり取りによって生み出されています。ANTS Performance Profilerはコードが実行したデータアクセスリクエスト(データベース、HTTP、ファイルI/O)を可視化する唯一の.NETツールです。データアクセスが可視化されるので、過度のリクエストや長過ぎるリクエストをそのリクエストを生み出したソースコードまで追跡できます。この特徴があるおかげで特にORMが生み出す性能問題を理解するのに便利です。また、ANTS Performance Profilerのプロファイル結果を出力するスピードは際立っています。私たちのユーザは性能診断上の最も重要な情報が何なのかを教えてくれました。その結果、今回の新しいリリースではインターフェースの多くの部分を再実装しそのような情報が簡単に見られるようにしました。最悪なことに性能診断はなかなか終わらない作業です。しかし、ANTS Performance Profilerは根本の問題が単純であれ複雑であれ、明確で意味のある結果を提供します。
InfoQ: ANTS Performance Profiler 8を使えば、アプリケーションの性能は改善されますか。
私たちの顧客のほとんどが性能を大幅に改善することができました。桁違いに改善したという話もよく聞きます。普通、効果がでるかどうかはアプリケーション次第ですが、このツールが無駄になるアプリケーションをほとんどないでしょう。
InfoQ:Windows Storeアプリのプロファイリングの性について教えてください。
どのようなアプリケーションでも高速に動くことは重要です。しかし、とりわけWindows StoreアプリのレスポンシブなUIにとっては性能は極めて重要です。効率の悪いアプリはバッテリーをあっという間に消費してしまいます。このため、MicrosoftはWindows Storeアプリにある程度厳しい性能要件を課しています。この要件を満たさないアプリはWindows Storeへの出品を拒否されるようです。アプリケーションがバックグラウンドで利用するプロセッサ時間の制限(2時間毎にCPU時間1秒)やアプリの起動時間は5秒以内、50ミリ秒以上UIスレッドをブロックするアプリの停止などの要件です。
このような制限に違反しないようにする唯一の方法は自分のアプリの性能を把握し、分析することです。
InfoQ: ウェブリクエストや非同期コードのプロファイルの利点は何ですか。
C#5のAsync / Awaitキーワードによって非同期コードはとても書きやすくなります。しかし、コードがどのように動作しているかは理解し難くなります。他のプロファイラは非同期メソッドのステートマシーンを表示するだけです。このステートマシーンはCLRが内部で作成しており、非同期メソッドとその非同期メソッドを呼び出したメソッドの関連づけるのを難しくしています。ANTS Performance Profilerは非同期メソッドの内部の実装を知らなくても、書いたコードとプロファイル結果を直接結びつけます。ウェブリクエストのプロファイリングはアプリケーションとウェブサーバがどのようにやり取りしているかを見せます。長い間動いているリクエストや繰り返されるリクエスト、失敗したリクエストを拾い出し、それらのリクエストの情報を見ることができます。これは、データアクセスという一般的な性能のボトルネックをすべての開発者が理解する必要があるということを示すための戦略の一部です。
InfoQ: ANTS Performance ProfilerをVisual Studio 2012で動かすことはできますか。
ANTS Performance Profilerはスタンドアロンのツールです。リッチなUI、特に性能タイムラインはVisual Studioに馴染みません。しかし、ほとんどの開発者はVisual Studioで利用したいと思っています。私たちは自動的に構成し、プロジェクトの設定を元にプロファイリングセッションを開始するVSエクステンションを提供しています。
InfoQ: ANTS Performance Profilerの今後のロードマップを教えてください。
3月にバージョン8をリリースするつもりです。その後は、ウェブ開発者にとってより使いやすくなるように改善をしていくつもりです。また姉妹製品のANTS Memory Profilerを大きく改良するつもりです。