Revision as of 16:12, 19 February 2010 by Tpavek (Talk | contribs)

This is the home page for NetBeans performance work. It provides introduction to the world of performance and enlists various other performance related pages grouped into appropriate (sub)categories.


The Performance Doublethink

The performance team plays two roles. On one side it acts as a guardian against regressions in consumption of various resources. On the other it needs to pro-actively seek and drive general improvements in overall architecture of the application. Mixing these two roles is not easy and may sometimes be perceived as pathological signs of doublethink.

Quality Assurance Role

As part of improving the NetBeans IDE quality the performance team seeks for new ways to identify UI Responsiveness problems, memory leaks and suboptimal implementations. Various intricate tools and methods has been invented to identify the actual end user problems (most notably the Slowness Detector), be notified about them (in cooperation with ReportExceptionProject) and have enough information to reproduce them (thanks to UIGesturesCollector). Performance problems are then processed and classified according to general quality bug priority guidelines.

The quality effort of performance team is always driven in boundaries of two important assumptions: make sure we always improve something and identify and prevent regression. By following these two simple constrains we managed to deliver visible improvements in spite of doing just small steps one by one. Of course we need to write a lot of tests, execute them regularly and also have a statistical framework to notify us about exceptional states as soon as they appear.

The QA side of performance team relies heavily on cooperation with other development teams and their willingness to listen, re-use the performance know-how, adopt the performance goals as their own and implement the necessary adjustments. This is sometimes tough, as optimal global solutions may look complicated from a local perspective, and it is necessary to remind us all to always take the global view point stance. However, when such point of view is found, the NetBeans development teams were always quite supportive in improving the overall application performance.

Development Role

Sometimes an effort to improve performance may not be co-related with a single feature. As a result there may not be anyone to assign a bug to (as is usual in the quality assurance scenarios). This is quite common when dealing with scalability problems - some subsystem is consuming unnecessary resources (start time, memory, loaded classes), but there is no way to reduce the resource demand, unless someone improves the overall architecture. In situations like this the performance team needs to step in and play its development role.

There is some development activity among members of performance team almost every release. Such activity is subject to standard planning with all its milestones, feature development and bug fixing phases and quality criteria. The only difference is that the development often happens in an area that is maintained by some other team. This increases the need for proper communication and responsibility allocation, so the performance improvement is achieved (in long time sustainable style) and all the involved parties are satisfied with the cooperation.

In many situations there is some kind of joint venture cooperation, where the owner of affected code and some members of performance team cooperate on development, finalization and bugfixing of the new feature. In other situation the work is solitary written by performance team member and generously donated. The changes are reviewed before integration through the APIReviews process. The common mode also includes a time limited (one release usually) responsibility of the performance team for bugs found in the donated code.

This mode of cooperation proved to be quite successful and let to various improvements which would be hard to achieve without the performance team accepting and taking responsibility for its development role.

Various Links

Here is an overview of all wiki pages related to NetBeans performance. See the genearal pages or inspect subcategories for specific performance aspects (including How can I fix memory leaks?, How can I profile NetBeans?, etc.).

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo