13.10.2014 Views

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

90<br />

bytecodes have surprisingly little impact on Java execution performance. The average<br />

was computed as the average of the benchmark-specific average results.<br />

Many of the benchmarks tested during this study support differing input sizes.<br />

This provides flexibility to the benchmark’s users, allowing computationally similar<br />

problems to be tested in differing amounts of time. This was of particular use during<br />

this study because the performance of the platforms tested varied considerably.<br />

Consequently, it was not possible to run the benchmarks using the same input size<br />

on every platform.<br />

The SPEC JVM98 benchmark suite supports three standard input sizes referred<br />

to as size 1, which executes in the least amount of time, size 10, and size 100 which<br />

takes the most time to complete. In all cases, both the profiling and execution were<br />

conducted using input size 100. The Java Grande Forum benchmark suite uses the<br />

letters A, B and C to denote the size of the input set considered by the benchmark<br />

where A denotes the smallest input set and C denotes the largest input set. All<br />

profiling work involving the Java Grande Forum benchmarks was conducted using<br />

input size A. When the benchmarks were tested for performance differing input sizes<br />

were used with the goal of having run times that were sufficiently large to minimize<br />

the impact of a single interruption by a background process and the granularity of the<br />

system timer while maintaining run times that were short enough to keep the amount<br />

of time required for performance testing manageable. As a result some benchmarks<br />

were executed using their smallest input size on a slower platform and executed with<br />

larger input sizes on other platforms. The average results presented in Figure 5.1<br />

show the results achieved for each benchmark independent of the input size selected<br />

when it was executed.<br />

Numerous additional performance results are presented in Figures 5.2 through 5.9.<br />

These graphs make use of the same histogram structure, showing the performance of<br />

each benchmark for each despecialization condition, followed by an overall average<br />

result for all of the benchmarks for each despecialization condition. Examining these<br />

graphs suggests that the results achieved for each benchmark can be classified into<br />

one of the following three categories:<br />

Category 1: This category includes those benchmarks that showed only<br />

a negligible difference in performance when any number of despecializations<br />

were performed. In this case, a negligible difference in performance<br />

is defined to be any change that is less than two percent of the benchmark’s<br />

baseline runtime. Including this two percent buffer allowed minor<br />

variations in benchmark performance that occurred as a result of differ-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!