kris said:
Hi, I need the info of how to tune the performence based on data
structures used. Like Collections.
The very first step: measure. Either acquire a profiler, or write in
some performance tests with System.getTimeMillis. Look for hot spots,
high execution counts, and memory blowouts.
The second step: interpret. Ask yourself whether the results you are
getting 'make sense'. For example, if your app or your microbenchmark
takes a long time to query for a piece of data, ask whether it _should_
take a long time to query that data. Is the data store keyed by some
key, and stored in a Map, or is it testing against a linked list with
..equals.
The third step: decide if you have a problem to fix. For example, if
your test case is storing a hundred names, then searching for 'Herb
Philbrick' five times, you probably saw no problems, but if you are
searching for all names containing 'Bob or Robert' out of ten million,
then you just might.
The fourth step: decide the problem level. If your problem is that
retrievals are slow, you would be better served using a database or a
map than trying to write a better sort-and-binary-search.
The fifth step: with a goal in mind, and a plan, recode.
The final step: measure again, and write down what you found. You will
find that the notes are worth more than the numbers, as new VMs change.
Jack Shirazi's "Java Performance Tuning" is a bit dated by now, but you
can run his tests on recent VMs and get results that are still
applicable.
Scott