Gadget profiler

Mentor: Juan Pablo Sandoval A
Second mentor: Alexandre Bergel
Level: Intermediate
Submitted proposal to Melange: Alejandro Infante
Invited students: Alejandro Infante
Students interested: Alejandro Infante(very), Milton Mamani


Understanding how an application behaves at runtime requires adequate tools. However, MessageTally, the standard Smalltalk code profiler, is very limited in the kind of analyzis it can carry out. Spy (a profiler framework) is an attempt that has been made in the past, however Spy suffers from poor design, typically forcing profilers to contain a heavy dose of duplicate code.

In this project, we plan to produce Gadget, a portable, open and flexible profiling platform. Hapao [1], Kai [2] and Rizel [3] will be migrated from Spy to Gadget.

Gadget will not only provide features to measure code coverage, time consumption, snapshot comparison, but will provide tools to monitor memory consumption.

All these features will provide to Pharo developers the tools to create domain specific profilers and reuse the features of different implemented profilers in Gadget.

1 http://objectprofile.com/#/pages/products/hapao/overview.html

2 http://objectprofile.com/#/pages/products/kai/overview.html

3 http://users.dcc.uchile.cl/~jsandova/rizel/

Technical Details

In this project the student will:

  • define and implement a profiler metamodel.
  • migrate three profilers from Spy to Gadget.
  • define a memory profiler to easily spot high memory consumption.

Benefits to the Student

The student will (i) address performance problems; maintainability, design and evolution issues. (ii) get a better understanding of the executing environment of Pharo; (iii) learn reflection and dynamic analysis basics;; (iv) understand the Smalltalk community better.

Benefits to the Community

  • Have a new open-source profiler framework with a smooth implementation
    of the feedback and experience from the community.
  • Allow the community to develop new profilers on top of Gadgetwhich are
    easier to implement and maintain.
  • A powerful memory profiler tool for finding memory leaks and optimizing the memory usage of smalltalk programs.

Updated: 3.5.2013