[[BackLinksMenu]] [[TicketQuery(summary=GROUP_APP_PERFORMANCE_R2, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == The goal of this task is to tweak our Profiler, and do a final try on existing profilers which can work with Sophie2 and produce useful results. == Task requirements == * Find a way to measure real method execution count (non-statistical). * Spend some more time with NetBeans Profiler and try to make it work with Sophie. * See if using any other existing profiler makes sense. * Actually, these profilers can turn out to have more features which could prove useful. * If none of the above works, try to incorporate bytecode instrumentation in our Profiler. This could waste a lot of time so do it only if really needed. * Consider implementing hit() behavior in the Profiler. * This means inserting a hit() statement in every method for which you want to get the real hit count. * This way you get the real hit count for a method, * and also you can get the last two elements in the stack trace and thus count how much times a given method A() has invoked another method B() in its body like: {{{ methodA() { for(int i = 0; i < 1000000000; ++i) { methodB(); } } }}} These could possibly be optimized in various ways like using findOne(), findAll() if used for lists, using some HashMaps etc. * Propose concrete optimization points in Sophie2 code and optimize them if possible * by either doing quick hacks * or proposing serious design changes (like the Aspects) and try to implement them if there's enough time. * Use any profiler outputs available to gather data which could be useful for the above goals. == Task result == * Working way to measure real hit count * Optimization proposals * Hopefully, implemented optimizations * Most probably, new functionality in our Profiler. == Implementation idea == * Implement hit() inside our Profiler and count results in some map. * Look at JVMPI if you're going to do bytecode instrumentation. * Find a NetBeans guru and ask him questions. == Related == * [wiki:GROUP_APP_PERFORMANCE_R0] * [wiki:GROUP_APP_PERFORMANCE_R1] * [wiki:GROUP_PRO_LIB_PERFORMANCE_R0] == How to demo == * show upgraded reports from the upgraded Profiler * show optimization proposals and/or concrete optimization results = Design = ^(Describe your design here.)^ = Implementation = ^(Describe and link the implementation results here (from the wiki or the repository).)^ = Testing = ^(Place the testing results here.)^ = Comments = ^(Write comments for this or later revisions here.)