An Efficient and Generic Event-based Profiler Framework for Dynamic Languages

An Efficient and Generic Event-based Profiler Framework for Dynamic Languages

Gülfem Savrun-Yeniçeri, Michael Van De Vanter, Per Larsen, Stefan Brunthaler, Michael Franz

09 September 2015

Profilers help programmers analyze their programs and identify performance bottlenecks. We implement a profiler framework that helps to compare and analyze the programs implementing the same algorithms written in different languages. Profiler implementers replicate common functionalities in their language profiler. We focus on building a generic profiler framework for dynamic languages to minimize the recurring implementation effort. We implement our profiler in a framework that optimizes abstract syntax tree (AST) interpreters using a just-in-time (JIT) compiler. We evaluate it on ZipPy and JRuby+Truffle, Python and Ruby implementations in this framework, respectively. We show that our profiler runs faster than the existing profilers in these languages and requires modest implementation effort. Our profiler serves three purposes: 1) helps users to find the bottlenecks in their programs, 2) helps language implementers to improve the performance of their language implementation, 3) helps to compare and evaluate different languages on cross-language benchmarks.


Venue : 2015 International Conference on Principles and Practices of Programming on the Java Platform: virtual machines, languages, and tools (PPPJ’15), Melbourne, FL, USA, September 8-10 2015.

External Link: http://dx.doi.org/10.1145/2807426.2807435