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)
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].