Changes between Version 3 and Version 4 of GROUP_APP_PERFORMANCE_R2
- Timestamp:
- 05/26/09 13:05:37 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GROUP_APP_PERFORMANCE_R2
v3 v4 4 4 5 5 = Analysis = 6 ^(Give as much as possible of the needed information for designing and implementing the task in the following sections.)^7 8 6 == Overview == 9 ^(Provide a brief overview of the whole task in its first revision. Stick to the current revision of the task, but keep an eye to the whole task progress, and stay alert for possible smells.)^ 7 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. 10 8 11 9 == Task requirements == 12 ^(List the necessary requirements that the task must fulfill.)^ 10 * Find a way to measure real method execution count (non-statistical). 11 * Spend some more time with NetBeans Profiler and try to make it work with Sophie. 12 * See if using any other existing profiler makes sense. 13 * Actually, these profilers can turn out to have more features which could prove useful. 14 * 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. 15 * Consider implementing hit() behavior in the Profiler. 16 * This means inserting a hit() statement in every method for which you want to get the real hit count. 17 * This way you get the real hit count for a method, 18 * 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: 19 {{{ 20 methodA() { 21 for(int i = 0; i < 1000000000; ++i) { 22 methodB(); 23 } 24 } 25 }}} 26 These could possibly be optimized in various ways like using findOne(), findAll() if used for lists, using some HashMaps etc. 27 * Propose concrete optimization points in Sophie2 code and optimize them if possible 28 * by either doing quick hacks 29 * or proposing serious design changes (like the Aspects) and try to implement them if there's enough time. 30 31 * Use any profiler outputs available to gather data which could be useful for the above goals. 13 32 14 33 == Task result == 15 ^(List the end product of the task (for example "Source code", "Wiki page", etc.))^ 34 * Working way to measure real hit count 35 * Optimization proposals 36 * Hopefully, implemented optimizations 37 * Most probably, new functionality in our Profiler. 16 38 17 39 == Implementation idea == 18 ^(Provide some rough implementation idea(s).)^ 40 * Implement hit() inside our Profiler and count results in some map. 41 * Look at JVMPI if you're going to do bytecode instrumentation. 42 * Find a NetBeans guru and ask him questions. 19 43 20 44 == Related == 21 ^(Add links to related tasks that could be useful or helpful.)^ 45 * [wiki:GROUP_APP_PERFORMANCE_R0] 46 * [wiki:GROUP_APP_PERFORMANCE_R1] 47 * [wiki:GROUP_PRO_LIB_PERFORMANCE_R0] 22 48 23 49 == How to demo == 24 ^(Provide instructions for demonstration of the task.)^ 50 * show upgraded reports from the upgraded Profiler 51 * show optimization proposals and/or concrete optimization results 25 52 26 53 = Design =