Faster Java

This page contains a comprehensive listing of Java performance-related links.


Benchmarking server based Java.

A composite Java benchmark measuring the performance of numerical codes occurring in scientific and engineering applications.

Java port of Linpack, a numerically intensive benchmark.

Describes an approach that unifies the recording and reporting components of performance analysis into a single data model and standard set of reports.

Coding Techniques

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

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.

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.

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.

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

Other Links

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

EditText of this page (last edited January 16, 2007) or FindPage with title or text search