Tuesday, October 13, 2009

Refactoring for Reentrancy

One of the readings for today's class, Refactoring for Reentrancy, was on refactoring existing Java code to make the code reentrant. The benefit of a reentrant program is that the program can run concurrently on multiple cores without interference. This will hopefully allow for performance benefits when run in parallel on multiple cores.

The authors approached the problem by looking to use thread-local storage for global variables in order to isolate concurrent tasks. Other tasks such as removing potentially unsafe calls to shared libraries and handling static initializers were also required for a functional solution. In order to assist developers in making the required code changes, the authors created an Eclipse plug-in.

Overall, I think this paper follows with a trend that we are seeing where researchers are trying to bring parallel programing to the mainstream and make it more of a "norm" than an exception. While I think the ideas presented as part of this paper are interesting, in my opinion it still falls a bit short. The developed plug-in seems incomplete and a non-trivial amount of developer involvement is still required to make things work. The performance timings also seem a bit inconclusive. Are the realized performance gains truly worth the effort? I'm not sure.

No comments:

Post a Comment