wiki:GROUP_APP_PERFORMANCE_R2

Version 4 (modified by gogov, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro 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|) failed
current transaction is aborted, commands ignored until end of transaction block

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.

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