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.

Appendix B. Appendix: Performance Evaluation<br />

B.1.1. Microbenchmarks<br />

We implemented the microbenchmarks specifically for assessing the performance<br />

of the presented implementations. The changes to the LRSTM and<br />

AmbientTalkST variants of the benchmarks are restricted to the necessary<br />

setup operations to execute the benchmarks in the context of the actor or<br />

STM implementation.<br />

Int Loop This benchmark is a tight while loop that subtracts 1 from an integer<br />

and executes until the integer is zero. This loop only executes<br />

basic stack operations and uses a special byteco<strong>de</strong> to do the subtraction.<br />

Thus, it does neither create context objects for message sends nor allocate<br />

other objects, because the integers are represented as immediate<br />

values.<br />

LRSTM: Loop executed in context of the STM, but since no object field<br />

mutation is done, an i<strong>de</strong>al implementation will not exhibit any slowdown.<br />

An OMOP-based implementation might need to reify the send<br />

of the subtraction operation, which will lead to a significant reduction<br />

of performance.<br />

AmbientTalkST: The loop is executed insi<strong>de</strong> a single actor and thus, an<br />

i<strong>de</strong>al implementation would not exhibit any slowdown. OMOP-based<br />

implementations might have the same message reification penalty as<br />

for the LRSTM implementation.<br />

Float Loop This benchmark is a tight while loop that subsequently does<br />

two additions of floating point numbers until the floating point value<br />

reaches a pre<strong>de</strong>fined limit. The loop results in corresponding stack operations<br />

for instance to store and load the float. Similarly to the Int<br />

Loop, the addition is done by a special byteco<strong>de</strong> that does not require a<br />

message send with context object creation. However, the floating point<br />

numbers are represented as heap objects and lead to high allocation<br />

rates. Note that we do not measure GC time but use a large enough<br />

heap instead, which avoids garbage collection completely.<br />

LRSTM and AmbientTalkST: We expect the same results as for the Int Loop,<br />

because the implementation is nearly i<strong>de</strong>ntical.<br />

InstVar Access This benchmark is a tight while loop i<strong>de</strong>ntical to the Int Loop,<br />

with additionally reads and writes an object field. All operations are enco<strong>de</strong>d<br />

with byteco<strong>de</strong>s without resulting in message sends. Thus, neither<br />

allocation nor creation of context objects is done.<br />

262

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

Saved successfully!

Ooh no, something went wrong!