[ index | benchmarks | speed | size | maintainability | rules | tools | compilers ]
March 18th, 1997March 12th, 1997
- Microbenchmarks: final update, since these have now been effectively replaced by Doug Bell's Benchmark applet.
- Maintainability: making your programs more maintainable by not using Java.
- Size: replacing zip and CAB with JAR files.
March 7th, 1997
- Microbenchmarks should be obsolete within a week--watch JavaWorld for an article and applet by Doug Bell.
- Speed: pointers to more JIT compilers, the Harissa Java-to-C compiler, and the JAVAR restructuring compiler for multiprocessors, plus limitations to inlining, and the cost of exceptions.
- Resources: Java-vs-C++ results for numeric code, plus an updated link to the Fhourstones benchmark.
February 26th, 1997
- Compilers: expected speedups from manually hoisting array length comparisons out of a loop.
- Contributed results for a PowerMac JIT compiler at last!
February 19th, 1997
- Contributed results for more x86 and non-x86 platforms.
February 12th, 1997
- Size: pointers to two other code obfuscators, plus how to reduce the size requirements of static final constants.
- Speed: the fastest way to draw a pixel.
- Resources: two new benchmarks, one that's computationally intensive and another that's a thread stress-test.
- Maintainability: coding style guidelines.
February 5th, 1997
- Contributed results for more non-x86 platforms, including a 500MHz Alpha.
- Linpack, or the perils of optimizing--the "improved" code runs slower on some Mac VM's!
January 25th, 1997
- Speed: why not to append Strings, and why to use the highest-level graphics primitives you can.
- Size: Date objects--broken and big!
January 9th, 1997
- Fixed broken links found by MOMspider.
December 3rd, 1996
- Contributed results for many more platforms, including Netscape 4.0 (no obvious changes in its JIT), and OS/2.
December 2nd, 1996
- Speed: Two new Java-to-C compilers are available: Toba, from the Sumatra project at the University of Arizona, and JCC, from Nik Shaylor (who's looking for funding).
- Speed: The cost of synchronization (especially in I/O methods), and what you can do to reduce it.
- Compilers: adding reference variables to enable the compiler to use faster opcodes (or eliminate them completely).
November 3rd, 1996
- Back at last -- paper deadlines are a terrible thing.
- Contributed results for more PC platforms, including the first OS/2 results.
October 30th, 1996
- Resources: another book with sections on optimization, an AWT benchmark, and a case study of Java optimization.
October 20th, 1996
- Microbenchmark results for SuperCede's new just-in-time compiler show that it's a clear winner in several categories (e.g. creating objects, manipulating bytes), although not all.
- Sun is promising to release their own JITC soon. They've released microbenchmark results for a beta version.
- More interestingly, Sun are putting together a JIT Validation Test Suite. Found a test that crashes your JITC? Sun wants it!
October 17th, 1996
- Microbenchmark and Linpack results for Symantec's new just-in-time compiler in Visual Café PR 2 suggest that Netscape was wise to pick it for their future implementations -- it challenges Microsoft and is clearly superior to the Borland JITC currently used in Navigator 3.0.
October 13th, 1996
- In the news:
- Microsoft's new Java SDK can wrap Java classes into an .exe file.
- Sun has released performance simulations for their PivoJava 1 Java chip.
- Netscape will abandon Borland's JITC for Symantec's.
- Resources: PC Magazine benchmark results for Netscape Navigator and MS Internet Explorer.
October 5th, 1996
- Maintainability: avoiding implicit constructors, using javadoc, pointers to other resources.
- Java Compilers: pointer to FAQ about javac -O optimization.
September 19th, 1996
- Microbenchmarks: new timings for Symantec's JIT compiler.
- Contributed results: new timings for Softway's Guava JIT compiler.
- Speed: information on JIT compilers and a Java-to-C translator.
September 15th, 1996
- Optimizing for Size: using an obfuscator such as Crema to reduce class sizes.
- Resources: preEmptive's page is back, plus pointers to PC Magazine benchmark results and BenchBeans.
- No more updates till September 30th, but I've got plenty of material in the pipeline.
September 9th, 1996
- Microbenchmarks: a new page compares different Java implementations on the same platform.
- Compilers: Symantec's Visual Cafe has the same inlining bug as Sun's JDK; Microsoft's Visual J++ doesn't.
September 6th, 1996
- Compilers and Optimizing for Size: inlined the examples so that you don't have to keep referring to a separate page.
September 2nd, 1996
- Compilers: when javac -O can generate illegal code.
- Microbenchmarks: additional results for Pentiums and PowerMacs.
August 26th, 1996
- Resources: two new books with chapters on Java optimization, two new benchmark suites, and a magazine article.
August 22nd, 1996
- Speed: additional pointers on graphics performance and replacing API classes.
- Compilers: what javac -O does to your code.
August 19th, 1996
- Microbenchmarks: additional results for Pentiums, Power Macs, and UltraSPARCs.
- Speed: pointers to JavaWorld articles on fallbacks for native methods and reusing objects rather than regenerating them.
August 15th, 1996
- Microbenchmarks: updated the applet to time JIT compilers more accurately. Plus, head-to-head performance comparison of the new 3.0 versions of Navigator and Internet Explorer.
August 14th, 1996
- Size: reducing the download time of your applets via zip files (Netscape), CAB files (Microsoft), or a server with HTTP keepalive (anything).
August 7th, 1996
- Things have been quiet recently because I've been writing a paper on Java as an Intermediate Language. It includes benchmarks for code written in C, interpreted Java, interpreted Java with native methods, and just-in-time compiled Java.
August 5th, 1996
- I've removed the frames - they were just getting in the way. The redesigned format is more friendly to old browsers (although table support is helpful!).
August 4th, 1996
- Resources: four new benchmarking links, including Bill and Paul's Excellent UCSD Benchmarks.
July 16th, 1996
- Microbenchmarks: my applet is now available, together with updated results.
July 12th, 1996
- Microbenchmark and Linpack results for Microsoft Internet Explorer 3.0 Beta 2, which has a JIT compiler.
- Editorial comment: currently, Microsoft's JIT is faster at accessing variables than Netscape's, marginally slower on simple math operations, and much faster at creating objects and using synchronized methods.
July 10th, 1996
- Additional resources, including new Java benchmarking pages.
July 6th, 1996
- How to determine how much memory your code uses.
June 30th, 1996
- The perils of timing Java code.
June 26th, 1996
- Microbenchmark results for Netscape 3.0b5, which has a JIT compiler.
- Linpack results for 3.0b5 show a 10x speedup over the JDK interpreter.
June 21st, 1996
- Why array initialization requires so much space.
June 18th, 1996
- Paul Santa Maria shows the steps required to benchmark and optimize a Mandelbrot Set program.
June 13th, 1996
- Added a link to a tutorial on improving animation speed.
- A new Java profile viewer is available as part of SourceCraft's Java IDE.
June 11th, 1996
- New microbenchmark results for the Asymetrix SuperCede JIT plug-in for Netscape. This is clearly beta software (no GC, JDK 1.0 only, not robust), but it has very good performance.
June 9th, 1996
- I've added a no frames page for the purists.
- If you're interested in more than microbenchmarks, try the CaffeineMark benchmark from Pendragon Software.
- How to zip your application's class files to reduce loading time.
June 6th, 1996
- Frames! Let me know what you think of the change. (No longer available).
June 4th, 1996
- Updated microbenchmark results for JDK 1.0.2 and Kaffe 0.3.
May 5th, 1996
![]()
- The Java Performance Report from Pendragon Software is recommended reading.
April 26th, 1996
- Greg White has released a new version of his Profile Viewer.
March 30th, 1996
- I'm back. No more net.interruptions expected for at least six months...
- Paul Týma's Writing SuperFast Applets explain how to avoid using Thread.sleep() as a synchronization mechanism.
- Symantec have released a "competitive analysis" of how their JIT compiler stacks up against Borland's.
March 29th, 1996
- New microbenchmark timings, using Sun's Java Workshop.
March 28th, 1996
- Compound assignment operators such as += are compiled into less code than the equivalent mathematical and assignment operators.
- It can pay to inline your own primitives: Math.abs(x) is slower than (x < 0) ? -x : x.
March 27th, 1996
- I wrote an optimized version of the Java Linpack benchmark by Jack Dongarra and Reed Wade, using some of the information on this page. The optimized code is 10-20% faster (and has now been adopted as the official version).
March 23rd, 1996
- How to profile applets.
- Additional resources: pointers to notes from a talk on Java Optimization, and a Linpack benchmark applet.
March 21st, 1996
- Reformatted using definition lists, so that it's easier to find specific optimizations.
- Added an access counter - this page is getting popular...
- This section.
- Gave the microbenchmarks their own section, and added results for both Randy Chapman's JDK 1.0 for Linux, and Tim Wilkinson's just-in-time compiler, Kaffe.
- How to make dead code elimination work with multiple debugging levels.
| http://www.cs.cmu.edu/~jch/java/whatsold.html | Java Optimization - What's Old |
| Last modified: Wed 18 Mar 1998 | Copyright © 1996, 1997 Jonathan Hardwick |