Program performance is always a concern, even in this era of high-performance hardware. This article, the first in a two-part series, guides you around the many pitfalls associated with benchmarking Java code. Part 2 covers the statistics of benchmarking and offers a framework for performing Java benchmarking. Because almost all new languages are virtual machine-based, the general principles the article describes have broad significance for the programming community at large.
I recently diagnosed the root cause of a concurrency bug, CR6822370,
and thought it sufficiently interesting to share the details. (CR 6822370 actually represents a
cluster of bugs that are now thought to be related by a common underlying issue).
Briefly, we have a lost wakeup bug in the native C++ Parker::park() platform-specific
infrastructure code that implements java.util.concurrent.LockSupport.park().
The lost wakeup arises from a race that itself arises because of architectural
reordering that in turn occurs because of missing memory barrier instructions.
The lost wakeup may manifest as various 'hangs' or instances of progress failure.
V. Kumar, D. Frampton, S. Blackburn, D. Grove, и O. Tardieu. Proceedings of the 2012 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA 2012), Tucson, AZ, October 19-26, 2012, том 47 из SIGPLAN Notices, стр. 297--314. ACM, (октября 2012)
X. Yang, S. Blackburn, D. Frampton, J. Sartor, и K. McKinley. Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, стр. 307--324. ACM, (2011)
B. Demsky, и P. Lam. Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, стр. 395--404. New York, NY, USA, ACM, (2010)
I. Ruiz, M. Nagappan, B. Adams, и A. Hassan. Proceedings of the 20th IEEE International Conference on Program Comprehension (ICPC), стр. 113--122. Passau, Germany, (июня 2012)
H. Burchell, O. Larose, и S. Marr. Proceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, ACM, (сентября 2024)
M. Braux, и J. Noyé. Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, стр. 2--11. ACM, (1999)
H. Schippers, T. Van Cutsem, S. Marr, M. Haupt, и R. Hirschfeld. Proceedings of the Fourth Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), стр. 4--9. ACM, (06.07.2009)
M. Paleczny, C. Vick, и C. Click. JVM'01: Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium, стр. 1--1. Berkeley, CA, USA, USENIX Association, (2001)