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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

266<br />

B.5.2<br />

Multicode Timing Script<br />

The multicode timing script performs tasks similar to those conducted by the despecialization<br />

timing scripts. However, it must also generate a new version of the Kaffe<br />

virtual machine which supports multicodes. The timing scripts used for the despecialization<br />

studies did not perform this task because they used each virtual machine<br />

in its original, unmodified form.<br />

The timing script was capable of measuring the performance of several benchmarks<br />

and rule files in a single run. An appropriate virtual machine was built for each rule<br />

file tested. The output generated from the script included an indication of each rule<br />

file tested and the actual output generated when the benchmarks were executed. By<br />

default, the script executed each benchmark six times although this behaviour could<br />

be overridden using a command line parameter.<br />

The output generated by the timing script was processed by a second script. It<br />

was responsible for reporting the average performance for each condition tested after<br />

discarding the highest and lowest values achieved in order to minimize the impact of<br />

outliers. All of the performance results generated by this second script were reported<br />

as a percentage of the execution time achieved by the first test condition tested. As a<br />

result, the first test condition run was normally the original, unmodified benchmark.<br />

B.6 Putting the Pieces Together<br />

Figure B.1 shows the process followed in order to generate the despecialization results<br />

presented in Chapter 5. The left column illustrates the steps that were taken using<br />

the scripts described in the previous sections in order determine what order the despecializations<br />

should be performed in. The steps in the right column show the steps<br />

taken to gather the performance results. The initial despecialization study presented<br />

in Chapter 4 did not perform any profiling. Consequently, it only performed the steps<br />

shown on the right side of the diagram.<br />

The process followed to gather multicode performance results is shown in Figure<br />

B.2. This process was followed for the studies presented in both Chapter 7 and<br />

Chapter 8. The left side of the diagram shows the process followed in order to<br />

determine which bytecode sequences should be replaced by multicodes. Once this<br />

determination was made, the steps on the right side of the diagram were followed in<br />

order to determine the impact the multicodes had on application performance.

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

Saved successfully!

Ooh no, something went wrong!