Java Glossary : optimising

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : O words : optimising.

optimising
Optimising is the art of making computer programs run faster. It is also the art of finding the optimum tradeoffs between ease of maintenance, simplicity, terseness, speed, portability, low RAM usage and quickness to get the app working in the first place. Don't go crazy with optimisation. If you spend an extra man-week on a project optimising, over the lifetime of the project, you had better save at least a man-week of other people's time waiting for the program, and you must consider that you have deprived those same people of using your program a week earlier.
We should forget about small inefficiencies, say about 97% of the time: premature optimization is the root of all evil.

-- Donald Knuth

A fast program is not as important as a correct one.

-- Steve McConnell

The only result of optimization you can usually be sure of without measuring performance is that you've made your code harder to read.

-- Steve McConnell

Jackson's rules of Optimization:
  1. Don't do it.
  2. (For experts only) Don't do it yet--that is until you have a perfectly clear and unoptimized solution.

-- M.A. Jackson

How to Proceed

If you have a program that is running too slowly, here is what to do. I suggest following the steps in this order:
  1. Get someone experienced in these matters to look over your code and find out where it is spending all its time. It helps to have a fresh pair of eyes on the problem. They will use a profiler to determine this. This identifies the bottlenecks.
  2. Look at the bottleneck code for obvious blunders and correct them.
  3. See if there is a totally different faster algorithm for accomplishing the same thing, e.g. hashMap vs linear searching a long table.
  4. Clean up the bottleneck code to ship shape. This is not considered optimising, just getting it squeaky clean with no rambling.
  5. See if the program is recomputing anything. Perhaps it can avoid redoing work it has already done. The form of optimisation tends to make the code more complex and less maintainable, but not always. Sometimes inexperienced programmers call methods where they are not needed at all, and that code can be yanked out entirely.
  6. Consider the use of a native optimising compiler such as Jet.
  7. If all else fails try JNI with C/C++. Beware. JNI only saves you CPU time if you can do a substantial amount of work in C/C++ on each call to offset the high overhead of the call.
  8. If even that fails try JNI with assembler.
  9. If that fails, tell your customers they will need bigger iron.

What Not To Do

General Tips

The sorts of thing you can legitimately do are:

Learning More

book_coverCode Complete : A Practical Handbook of Software Construction
1-55615-484-4
Steve McConnell
Gives lots of practical advice on optimising. He talks mostly about C with examples in Fortran, Pascal, Basic and Ada. He doesn't talk about Java. It didn't exist when the book was written.
amazon.com Barnes and Noble
amazon.ca chapters
amazon.co.uk amazon.de

book_coverJava Performance Tuning
0-596-00015-4
Jack Shirazi
O'Reilly Book. Recommended. Read more about it.
amazon.com Barnes and Noble
amazon.ca chapters
amazon.co.uk amazon.de
book_coverJava Platform Performance: Strategies and Tactics
0-201-70969-4
Steve Wilson, Jeff Kesselman
amazon.com Barnes and Noble
amazon.ca chapters
amazon.co.uk amazon.de
book_coverEnterprise Java Performance
0-13-017296-0
Steven L. Halter, Steven J. Munroe
amazon.com Barnes and Noble
amazon.ca chapters
amazon.co.uk amazon.de
book_coverSun Performance and Tuning: Java and the Internet (2nd Edition)
0-13-095249-4
Adrian Cockcroft, Richard Pettit, Sun Microsystems
amazon.com Barnes and Noble
amazon.ca chapters
amazon.co.uk amazon.de


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 1029.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/optimising.html J:\mindprod\jgloss\optimising.html