05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

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.

8.2. Methodology<br />

Generalizability beyond Interpreters The low performance of the RoarVM<br />

preclu<strong>de</strong>s any generalization beyond interpreters. Since its implementation<br />

is comparatively inefficient, it can hi<strong>de</strong> performance effects that are caused<br />

by the OMOP implementation. In any highly optimized VM implementation,<br />

newly introduced overhead will have a higher impact than in an implementation<br />

that is already slow to begin with.<br />

Consequently, it is not possible to generalize the results to highly optimized<br />

VMs that use JIT compilers. This is a serious limitation, but addressing it is<br />

outsi<strong>de</strong> the scope of this dissertation and part of future work (cf. Sec. 9.5.2).<br />

However, the results are transferable to common byteco<strong>de</strong>-based interpreters,<br />

e. g., Lua 5.2, Python 3.3, Ruby 1.9, because they have similar execution characteristics.<br />

8.2. Methodology<br />

This section gives an overview of the methodology used for the execution of<br />

the experiments as well as for the reporting in this dissertation.<br />

8.2.1. Precautions for Reliable Results<br />

The benchmarking methodology is <strong>de</strong>rived from the advice of Georges et al.<br />

[2007] for a practical statistically rigorous performance evaluation. Consequently,<br />

it takes the following precautions for setting up the experiments:<br />

• Measure steady-state performance: byteco<strong>de</strong>-interpreter VMs do not<br />

have a warmup phase, however the CogVM (cf. Sec. 4.3) with its baseline<br />

JIT compiler needs proper warmup to reach its steady-state. Currently,<br />

it is sufficient for the CogVM to execute the benchmark twice before<br />

the effectively measured run to ensure that the co<strong>de</strong> is compiled and<br />

ready. Since the CogVM does not support adaptive compilation, steady<br />

state is reached and performance will remain unchanged for subsequent<br />

execution.<br />

• Minimize non<strong>de</strong>terminism incurred by concurrently executing threads:<br />

Since the performance evaluation focuses on the general performance<br />

impact (cf. Sec. 8.1.3) and since the OMOP itself does not affect the characteristics<br />

of parallel execution, 15 this evaluation focuses on sequential<br />

15 As shown with the case studies (cf. Sec. 6.2), the OMOP does not change execution semantics,<br />

but enables language implementers to enforce <strong>de</strong>sired semantics more directly. It does<br />

207

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

Saved successfully!

Ooh no, something went wrong!