6.5 million software developers and still going strong

Java Developer Magazine

Subscribe to Java Developer Magazine: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Java Developer Magazine: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Java Developer Authors: Stackify Blog, Douglas Lyon, Glenda Sims, APM Blog, Pat Romanski

Related Topics: Java Developer Magazine

Java Developer : Article

Maximizing Java Performance with Bespoke Programming

When automatic optimization, code analysis, and dynamic recompilation don't work

Commercial systems are developed with a huge range of performance requirements and we are concerned in this article with the small number of systems where absolute maximum performance is demanded either in terms of execution speed or available memory. We'll discuss the role of bespoke implementation and show that writing programs that utilize novel data structures and new algorithms designed with knowledge of the specific problem context is a necessary complement to the generic components and automatic optimizations offered by compilers and modern JVMs to maximize performance.

Empirical Tests
We'll demonstrate this thesis here with an empirical comparison of the standard Java sort routines working with integers and bespoke implementations optimized to handle integers in specific contexts. Graphs comparing the speed of these algorithms will be presented.

All the empirical tests described in this article were run several times and an average taken, so we eliminate any random variations introduced by unexpected operating system activity. These tests were run on an isolated system, with no other users or applications operating, to minimize skewing the results. The results are output directly by the benchmark programs to file, outside the timed code section, and the results are correlated by an automatic graphing program to remove the possibility of human error. The correlation program also checks that every average calculated for each point on the graphs is calculated from the same number of underlying samples, reports the standard deviation, and identifies any outliers. These are either ignored because they are not significant or the entire benchmark can be rerun.

Efficient Code
The central proposal here is not new or controversial and has been clearly communicated in computing literature for many years that as a rule the fewer instructions a program executes the faster it runs. This is generally true of programs written in any language and is therefore also true of programs written in Java and C++, both common language choices for large, scalable, fast, distributed systems.

Pragmatically this requires hand-crafted code written in a general programming language such as Java or C++ that accounts for a specific programming context to successfully implement the fastest, most memory-efficient programs. In contrast, relying solely on configuring generic components, designed and implemented without knowing the specific circumstances of their use, whether these be off-the-shelf libraries or the automatic optimization of compilers, even with advances in JVM technology, might be sufficient in many circumstances but may not necessarily be optimal. Ultimately, bespoke design, implementation, and optimization, and the creative skill of the programmer used to complement these generic components, will produce the fastest, most scalable programs.

More Stories By Adrian Marriott

Adrian Marriott is principal consultant at Progress Software focused on DataXtend and ObjectStore. He has 15 years of industrial experience implementing large, fast, distributed, object-oriented systems using the C++, Java and LISP languages. Adrian has a BA in philosophy from Warwick University and an MSc in artificial intelligence and computer programming from Southbank Polytechnic in London.

Comments (1)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.