Changes between Version 2 and Version 3 of GROUP_APP_PERFORMANCE_R1
- Timestamp:
- 05/19/09 19:27:18 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GROUP_APP_PERFORMANCE_R1
v2 v3 17 17 * Structure the profiler report by the natural stack trace execution tree-like structure. This means that at the top of the tree there should be the main() run method of FakeAuthorMain for instance with total time consumption of 100%. Lower there should be methods which are directly invoked from main() and the sum of their total time consumption should be 100%, etc. 18 18 * This profiler is intended to locate higher level methods which consume too much time and/or are called too many times, so we can optimize them. Locating that lowest level methods like native library file system IO calls are called lots of times doesn't help much because we can't do much to optimize such cases, but finding out that ReflectionUtil.findMethodAnnotation() consumes much time led to a big startup performance optimization before. 19 * If other useful features come up in mind and can be implemented in time, implement them. 19 20 * Provide a report with the described results in an output plain-text file. 20 * Providing the functionality described above is generally done in two ways -- by actually measuring real time executionand by statistically measuring time consumption. The second is done by doing snapshots of the program's state at a given interval and gathering statistics about current methods in all alive threads. First one seems to be too slow and me and Milo think that the second gives a good enough accuracy of the result, so use the second approach.21 * Providing the functionality described above is generally done in two ways -- by actually measuring real execution time and by statistically measuring time consumption. The second is done by doing snapshots of the program's state at a given interval and gathering statistics about current methods in all alive threads. First one seems to be too slow and me and Milo think that the second gives a good enough accuracy of the result, so use the second approach. 21 22 22 23 * If a good enough profiler is proposed and there's no longer a need for a customer profiler, drop it and use the existing one. … … 24 25 * Use the (custom or already-existing) profiler to identify low performance spots which could be optimized. 25 26 26 * Optimize these spots by either low-level hacks or by proposing new design which could be implemented in time.27 * Optimize these spots by either doing quick low-level hacks or by proposing new design which could be implemented in time. 27 28 28 29 == Task result == … … 46 47 47 48 = Implementation = 48 ^(Describe and link the implementation results here (from the wiki or the repository).)^ 49 * '''hprof''''s file format can be used as a base for the output format of our custom profiler. 50 * use Thread.getAllStackTraces() and then build a tree. 49 51 50 52 = Testing =