JavaおよびAndroidアプリケーションを対象とした動的なコード都市可視化によるリアルタイムプロファイラ

大神勝也 (1651022)


アプリケーションのパフォーマンスの低下や改善に関わる開発者は,プロファイラを使用して,実行時間を消費するボトルネックを素早く発見することができる.非リアルタイムプロファイラは既に実行されたスタックトレースの履歴を対象に分析を行うが,リアルタイムプロファイラはアプリケーションの実行と同時に結果を出力するため,ユーザは結果を瞬時に知ることが可能である.しかし,リアルタイムプロファイラは過度に大きく複雑な結果を出力することがあり,ユーザにとって分析が困難となる恐れがある.本論文では,ユーザにとって理解が容易なリアルタイムプロファイラのパフォーマンス可視化手法を提案する.提案するプロファイラでは,アプリケーションの実行は3次元のコード都市として可視化され,アプリケーションのソフトウェア構造と実行のパフォーマンスが表現される.我々のケーススタディでは,提案するプロファイラを使用して実際のJavaアプリケーションおよびAndroidアプリケーションのプロファイリングを行い,提案するプロファイラの有用性と実用性を確認する.

For developers concerned with a performance drop or improvement in their software, a profiler allows a developer to quickly search and identify bottlenecks and leaks that consume much execution time. Non real-time profilers analyze the history of already executed stack traces, while a real-time profiler outputs the results concurrently with the execution of software, so users can know the results instantaneously. However, a real-time profiler may risk providing overly large, complex and difficult to shortly analyze outputs for the developers. In this paper, we visualize the performance of a real-time profiler to easily understand. With our profiler, program execution is visualized as a three-dimensional code city, representing the structure and performance of the program. In our case studies, we profile the real Java and Android applications with our profiler to confirm its practicality and utility.