next up previous
Next: Overall discussion Up: Performance Previous: The compile test

Intercepting operations


 
 
Table 8: Interception time, interpreter.
Configuration i586 i686 spu1 spu2
synchronized 0.92 0.30 0.42 0.35
invokestatic 0.59 0.17 0.22 0.18
invokespecial 0.65 0.17 0.23 0.19
invokevirtual 0.65 0.17 0.24 0.19
invokeinterface 0.67 0.18 0.24 0.19
field operations 0.60 0.16 0.21 0.17
array operations 0.56 0.15 0.21 0.17

This table presents the interception time of various operations in the Guaranį interpreter, with a do-nothing meta-object. Field operations refers to static and non-static field reads and writes. Array operations involve array length reads and array elements reads and writes.

(times are in milliseconds)


 
 
Table 9: Interception time, JIT compiler.
Configuration i586 i686 spu1 spu2
synchronized 0.55 0.018 0.33 0.25
invokestatic 0.30 0.099 0.20 0.15
invokespecial 0.32 0.10 0.18 0.14
invokevirtual 0.33 0.11 0.20 0.15
invokeinterface 0.33 0.11 0.19 0.15
other operations 0.3 0.09 0.17 0.13

This table presents the interception time of various operations in the Guaranį JIT compiler, with a do-nothing meta-object. Other operations refers to all field and array operations.

(times are in milliseconds)

We have also performed some tests involving actual interception, using a do-nothing meta-object to intercept the operation that is the subject of each test. The absolute time spent on the interception of a single operation is presented in Table 8, for the interpreter, and in Table 9, for the JIT compiler.

It is worth noting that each synchronized block involves two operations, one that enters the monitor of an object and another that leaves it. Since both are intercepted, the interception time is increased. Additional details are available elsewhere [18].


next up previous
Next: Overall discussion Up: Performance Previous: The compile test
contact the authors