As part of my job, I occasionally get to do some research. Fortunately I enjoy it.
Apart from continuing research in the area of virtual machines, I am currently supervising students working on programming embedded devices (Zigbee, NSLU2, WRT54G) and a number of web-related projects using Ruby On Rails and Java.
My post as researcher at TCD built on my knowledge of the Java Virtual Machine (JVM) and my ‘C’ programming. The research work, funded by the Enterprise Ireland Research Innovation Fund, involved constructing a new Java interpreter, including the necessary tools for automatic code generation and optimisation. Once the new optimised interpreter was created, a number of more sophisticated optimisations were researched and applied to the JVM. The results, obtained using reliable hardware performance counters, yielded convincing results supporting my main thesis. This thesis asserted that the performance difference between interpreters and Just-In-Time (JIT) compilers is not as great as is commonly believed, and that under certain circumstances interpreters can actually be faster than JIT compilers.
The most valuable result from the PhD is the recognition that the choice of execution engine for a JVM is not simply interpreter versus compiler (JIT or Ahead-Of-Time). Instead, there are many different choices in between, which can be determined by resource availability and execution speed requirements.
The primary aim of my MSc research was to study phase changes in NP-Complete algorithms and examine problems that previously have shown to be difficult to compute. The computational resources for this empirical study came from idle machines on the UCD campus network. This required the construction of a custom built distributed computational environment that I implemented in Java. A significant portion of the thesis was the design and construction of this environment, and proof of its effectiveness.
My final year BSc project was an editor implemented in Lisp. Apart from wearing out the ‘shift’, ’9′, and ’0′ keys on my keyboard, I learned that there was more than one approach to learning programming. It involves elephants. Overall, it was a fun project.