The biggest strength that metacircular VMs offer is that they are created in the same language they are built to run. This allows for many techniques to increase performance and functionality, such as with the way they were using several construction tricks and java calls to construct stack traces during exceptions. While there may be more classically efficient languages to construct a VM in, the flexibility that building your VM in a mature language gives goes far beyond the negatives of performance loss. Squeak, as mentioned in the chapter, is a wonderful example of this. The ability to use Smalltalk's own methods to perform explorations of any and all objects at any time was of great assistance during the time I spent working in that environment. And as mentioned in the chapter we can overcome much of the performance deficit that is incurred by performing many small tweaks at all levels.
The biggest fear I had when reading that they had implemented their own threading library was that the team did not think ahead and make it easy for them to replace it with something should a more efficient library be created. However, in the chapter they make specific reference to making an API for their thread usage supposedly allowing for the easy substitution of other threading techniques. Unfortunately the article doesn't go into depth on how effective this API is possibly because they have not yet had the chance to test it out. The decision to build their own thread library certainly made sense at the time, as this allowed them to greatly customize the performance and behavior of their system, and thus kept with their overall design aesthetic and made great gains for their project. Only time and further work will tell how good their thread API actually performs as multiprocessors and OS behavior continue to advance.
Monday, September 28, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment