On 19 nov 2012, at 10:52, Alan Bateman <alan.bate...@oracle.com> wrote:
> On 15/11/2012 15:50, Staffan Larsen wrote: >> >> I now have some micro-benchmark numbers on windows and linux (the solaris >> runs are not complete yet). While doing these runs we initially saw a >> regression on the file reading benchmarks. Investigation showed that the >> compiler was not able to inline the IoTrace.xxBegin() and IoTrace.xxEnd() >> methods because the IoTraceContext class in the signature had not yet been >> loaded. This forced me to go back to just an Object in the signatures for >> these methods which allowed them to be inlined and performance restored. >> > Thanks for creating a set of micro-benchmarks and reducing the concern about > this instrumentation. > > I guess you saw the review request from Nils where he proposed adding > invasive instrumentation to Throwable. The consensus in the replies was that > bytecode instrumentation seemed more appropriate. Aside from the path field > that you've added to the streams classes, is there any reason why the I/O > instrumentation couldn't also be done with bytecode instrumentation? I think you are right that bytecode instrumentation would also work. The only problem I see (apart from the path field) is the time it would take to develop such a solution. I'm not sure if that is a good enough argument for keeping the non-bytecode-instrumentation solution, though. Or if we could replace the non-bytecode-instrumentation solution with an updated bytecode instrumentation solution in a later update? Not ideal, but would allow us to complete the project on time. Thanks, /Staffan