Comprehensive synchronization elimination for Java

  • Authors:
  • Jonathan Aldrich;Emin Gün Sirer;Craig Chambers;Susan J. Eggers

  • Affiliations:
  • Department of Computer Science and Engineering, University of Washington, Box 352350, Seattle, WA;Department of Computer Science, Cornell University, Ithaca, NY;Department of Computer Science and Engineering, University of Washington, Box 352350, Seattle, WA;Department of Computer Science and Engineering, University of Washington, Box 352350, Seattle, WA

  • Venue:
  • Science of Computer Programming - Special issue on static analysis (SAS'99)
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

In this paper, we describe three novel analyses for eliminating unnecessary synchronization that remove over 70% of dynamic synchronization operations on the majority of our 15 benchmarks and improve the bottom-line performance of three by 37-53%. Our whole-program analyses attack three frequent forms of unnecessary synchronization: thread-local synchronization, reentrant synchronization, and enclosed lock synchronization. We motivate the design of our analyses with a study of the kinds of unnecessary synchronization found in a suite of single- and multithreaded benchmarks of different sizes and drawn from a variety of domains. We analyze the performance of our optimizations in terms of dynamic operations removed and run-time speedup. We also show that our analyses may enable the use of simpler synchronization models than the model found in Java, at little or no additional cost in execution time. The synchronization optimizations, we describe enable programmers to design efficient, reusable and maintainable libraries and systems in Java without cumbersome manual code restructuring.