next up previous contents
Next: Sample Simulator Input and Up: Continuous Compilation for Software Previous: Summary

 

Chapter 7
Conclusion

The world of personal computing is becoming more connected. The advent of the World Wide Web has caused an explosive growth in the population of Internet users. Everyday new members join the network community. It is changing the way we work, the way we think. Everyday one reads another story about the ``global network'' and the way it is changing the world. Major computer companies have built entire advertising campaigns around this very idea, and the future promise of bringing it about. Providing on-line services to the home user has become a multi-million dollar business.

The world of computing is becoming more interactive. The days of batch computing are all but gone. We have become used to, and have come to expect, quick response times. Even as we move to a more decentralized, remote model of computing our expectations stay the same. In fact, the spread of graphical interfaces and multimedia has only served to increase our expectations. The effect on the computing world of the graphical, multimedia based nature of the Web stands as testimony to this.

The world of computing is becoming more mobile. Mobile computers are becoming smaller and more powerful everyday. However, people do not want to give up connectivity for mobility.

With the more connected, more interactive, more mobile paradigm comes the need for the rapid transmission of programs from a remote server. The recent and continuing advances in network technology will help alleviate this problem by providing greater bandwidth, but network usage seems to always increase to fill the amount of bandwidth available. In addition, while network technology is improving rapidly, advances in wireless computing still lag far behind that of wire-based media.

We believe that this shift to a more connected, more interactive model of computing is impelling a move to a new paradigm of program translation, namely that of continuous compilation as described in this thesis.

Moving-target computing is not the only possible application of continuous compilation. As software development becomes more interactive in nature, the benefits of a continuous compilation paradigm will become more evident. Visual programming is just one example of a field which could profit from exploring such a paradigm.

The continuous compilation paradigm provides many of the benefits of an interpreted environment while enabling tremendous performance increases over interpretation. In addition, we showed that continuous compilation outperforms a traditional compilation model in many circumstances, even when using a single processor. With a dual-processor system, the benefits of using the continuous compiler are even greater.

We also showed that the performance of the continuous compiler is strongly dependent on the design of various aspects of the compiler. Specifically, the strategy used to replace source code with native code and the order in which the translation from source code to native code is carried out both have a strong affect on performance.

As expected, the replace-preemptive strategy proved to be much more effective than the replace-at-call strategy in most cases, so much so that it would appear to be worthwhile to implement the replace-preemptive strategy in an actual system, even with the extra difficulty involved. One question that still needs to be resolved is exactly how much overhead the replace-preemptive strategy would incur.

The question of order of compilation has proven more difficult. While the longest-overall strategy often produced the best performance, it requires previous knowledge about the execution of the program that is difficult to collect and might not always be available. However, the longest-so-far strategy appears to be a good approximation of longest-overall. It might also be possible to use the history of previous executions to approximate the longest-overall strategy.

Although our pseudo-program generator provided valuable data in these experiments, it turned out to be less effective than was hoped. The ProGenitor program could be made more useful if it was modified so that the program structure generated more closely resembled that of real programs. Allowing the user to specify certain common structures, like an event-loop based program, would also be beneficial.

To summarize, we believe that the continuous compilation paradigm exhibits the following advantages:

  1. immediate response time, equivalent to that of interpretation,
  2. shorter recovery time than traditional compilation,
  3. execution performance which approaches that of traditional compilation over time,
  4. smaller distribution file size, and
  5. the ability to deliver applications in a target-independent format.
In addition, since the user is no longer waiting for compilation to finish, more time can be spent on optimizing the compiled code.

The next step is, of course, the construction of an actual continuous compilation system. We believe that it is only a matter of time until such systems become commonplace.


next up previous contents
Next: Sample Simulator Input and Up: Continuous Compilation for Software Previous: Summary