This page contains a comprehensive listing of Java performance-related links. '''Benchmarks''' * ''The Volano Report'' http://www.volano.com/benchmarks.html (added March 13, 2002) : Benchmarking server based Java. * ''SciMark 2.0'' http://math.nist.gov/scimark2/about.html (added March 13, 2002) : A composite Java benchmark measuring the performance of numerical codes occurring in scientific and engineering applications. * ''Linpack Java'' http://www.netlib.org/benchmark/linpackjava/ (added Sept 5, 2002) : Java port of Linpack, a numerically intensive benchmark. * ''A unifying approach to performance analysis in the Java environment.'' http://www.research.ibm.com/journal/sj/391/alexander.html (November 1, 2000) : Describes an approach that unifies the recording and reporting components of performance analysis into a single data model and standard set of reports. * ''Additional benchmarks'': http://math.nist.gov/scimark2/resources.html '''Coding Techniques''' * ''Tuning Performance and Process, A Conversation with Martin Fowler, Part VI'' http://www.artima.com/intv/tunable.html (added May 6, 2002) : MartinFowler, chief scientist at Thoughtworks, Inc. and author of numerous books on software design and process, talks with BillVenners about balancing maintainability and efficiency, creating tunable software, the role of patterns, and the AgileSoftwareManifesto. '''Java Runtime improvements''' * ''An Adaptive, Region-based Allocator for Java''. http://www.sable.mcgill.ca/publications/#ismm2002 (added April 22, 2002) : Adaptive, region-based allocator. Allocate non-escaping objects in local regions, which are allocated and freed in conjunction with their associated stack frames. By releasing memory associated with these stack frames, the burden on the garbage collector is reduced, possibly resulting in fewer collections. * ''A Comparative Evaluation of Parallel Garbage Collectors''. http://www.research.ibm.com/people/d/dfb/papers.html#Attanasio01Comparative (added June 5, 2001) : Describes a suite of garbage collectors implemented in the IBM Jalape�o Java Virtual Machine, and quantitatively evaluates the relative performance of the different collectors. * ''A Comprehensive Approach to Array Bounds Check Elimination for Java''. http://www.sable.mcgill.ca/publications/#cc2002-1 (added February 2002) : Comprehensive approach based upon three analyses: flow-sensitive intraprocedural analysis called variable constraint analysis (VCA), array field analysis, and rectangular array analysis. VCA builds a small constraint graph to infer the relationship between array index expressions and the bounds of the array. Building on VCA, array field analysis is applied on each class and provides information about some arrays stored in fields, while rectangular array analysis is an interprocedural analysis to approximate the shape of arrays, and is useful for finding rectangular (non-ragged) arrays. * ''A Study of Exception Handling and Its Dynamic Optimization in Java''. http://citeseer.nj.nec.com/ogasawara01study.html (added 2001) : Two common exception handling techniques are stack unwinding and stack cutting. Stack unwinding optimizes the normal path, while stack cutting optimizes the exception handling path. This paper proposes a new technique called Exception-Directed Optimization, which optimizes exception-intensive programs without slowing down exception-minimal programs. '''Native Compilation''' * GNU Compiler for Java: http://gcc.gnu.org/java/ * Diab FastJ Compiler: http://www.windriver.com/products/html/fastj_compiler.html * Manta native Java compiler: http://www.cs.vu.nl/manta/ * ''Weighing in on Java native compilation'' http://www-106.ibm.com/developerworks/java/library/j-native.html?loc=j (March 13, 2002) * ''Java Native Compilation Examined'' http://slashdot.org/developers/02/01/31/013247.shtml (March 13, 2002) '''Other Links''' * ''Web Pages Related to Compiling the Java Programming Language'' http://www.bearcave.com/software/java/comp_java.html (March 13, 2001) * ''Sun's J2SE Performance and Scalability Guide'' http://java.sun.com/j2se/1.4/performance.guide.html (March 13, 2002) * ''Java Performance Tuning'' http://www.javaperformancetuning.com * Search ''Java World webzine'' for 'performance' - http://www.javaworld.com/isearch?qt=performance&site=javaworld&ms=1&tid=1&st=1&rf=0 * Search ''JavaPro magazine'' for 'performance' - http://www.fawcette.com/search/results.asp?find=performance&lib=javapro * ''Physicists Set New Record for Network Data Transfer'' - "One of the key advances in this demonstration was Fast Data Transport (FDT; http://monalisa.cern.ch/FDT), a Java application developed by Iosif Legrand of Caltech that runs on all major platforms and uses the NIO libraries to achieve stable disk reads and writes coordinated with smooth data flow across the long-range network." - http://www.physorg.com/news85246030.html ---- PerformanceTipsHaveAShortShelfLife -- is there anything more recent than 2002 to list here? (In 2002, pool recycling of Java objects produced copiously was a good idea to gain performance. In 2005, avoiding pool recycling of anything but threads, filehandles, and connections is a good idea to gain performance. The main reason being a move to generational GarbageCollection and related VM and GC tweaks. ---- See: JavaProfilers CategoryJava, CategoryOptimization