2019 Volume 36 Issue 2 Pages 2_93-2_105
For software performance improvement, a profiler allows developers to quickly search and identify bottlenecks and leaks that consume much execution time. However, existing profilers require specific execution scenarios to set profiling periods, which is difficult to find out the bottlenecks of the systems. In addition, a current interface showing a list of individual executed methods does not help developers easily understand hierarchical namespace positions of executed modules. To address these issues, we propose a real-time profiler for Java and Android applictions with city-like visualization of dynamic code executions. With our profiler, program executions are visualized as a three-dimensional software city representing the structure and performance of the application. In our case studies, we profile the real Java and Android applications with our profiler to confirm its practicality and effectiveness.