Fitness65PressRelease

Press Release

For release in November, 2008

NetBeans Performance team is proud to co-contribute to the success of NetBeans IDE 6.5, the latest and greatest release of NetBeans IDE of all times. Although the performance was not a major theme for the 6.5 release we are glad we managed to do improvements in various visible areas. We are also fond of stiffening the verification framework that we use to prevent regressions, so the likelihood of losing all those hardly extracted milliseconds and kilobytes is lowered for current and future releases.

Contrary to NetBeans 6.1 release (more info at Fitness61PressRelease), which was fully performance centric, and where we managed to reach tremendous user visible improvements in terms of scalability and perceived performance in critical areas, the release 6.5 contained much fewer performance goals. Still we have reached quite visible improvements in many of them.

Focus on the Enterprise

NetBeans IDE has been for many years a choice for individual developers due to its excellent support for new features and coding productivity. However as NetBeans wants to simplify life of teams, and corporate developers as well, we decided to shift the focus of the performance team to the issues that are most painful when coding and working in a group.

The most central point of every group of developers is the access to sources and the way one converts them via build execution into binary products. We are glad to significantly improve and unify the behavior of sources on top of plain filesystem as well as those hosted on enterprise level version control systems like CVS, Subversion, Mercurial and ClearCase. Due to the application of innovative unified black box testing from the bottom the teams working on low level disk operations managed to find even the most little differences between various operations of different source control systems and eliminate them. With additional help of the history breaking I/O counting security manager we could also get the number of useless disk accesses on par between all of these implementations. As a result we can announce to every enterprise level developer that the access to his sources is on par with access to local files without version control back end and it greatly benefits from sharing all the performance improvements done in this area for previous, 6.1, version.

Running standard disk access suite on Subversion Reads Writes
# of access in 6.1 8849 534
# of access in 6.5 2236 (-75%) 320 (-40%)


Simplified Testability

Writing tests for NetBeans based application was never as easy as it is now and the performance team is glad to have contributed to this as well. The testing infrastructure dates to early years of this century and its creation was driven by the needs of our quality department. It took time before third-party developers caught up with this effort and started to write tests and various tools and wizards to simplify test development. However the initial delay caused a gap between the developers and maintainers of the testing framework which, though many tried, could never be fully overcome.

The release 6.5 is great step forward in terms of simplicity, configurability and use of common development tools when testing NetBeans based applications. The tests are now fully integrated into the apisupport UI and can be edited, executed, debugged, profiled without any additional tool other than NetBeans IDE 6.5. It's quite easy to use NetBeans testing libraries like NbJUnit, Jemmy, and Jelly. However, as these libraries no longer play any special role in the system, it is quite easy to integrate with industry standard testing tools like JMock, FEST, etc.

The performance testing infrastructure could be greatly simplified with use of the new testing support and is now instantly ready for use by any developer. With just a few clicks, everyone can run the same performance tests that we execute daily and measure their effects on their own computer, builds and modifications. Due to the testing infrastructure improvements we are now quite well positioned for future growth and no regressions in the performance aspects in the ever growing NetBeans IDE as can be documented by many start up regressions (136823, 137744, 140389, 142756, 142758, 142764, 143048, 143052, 137740, 140323, 140387, 140390, 140392, 143065) discovered during 6.5 development cycle.

Unification of Various Parts of the System

Deep analysis of presentation of sources in the NetBeans IDE revealed a surprising result - various parts of the system perform certain operations multiple times in a row. The lower level unit computes some data, makes a decision on their values, forgets them and passes the control to higher level part of the system. This part requests a similar set of data again, and when it obtains it, makes a decision. This kind of forgetfulness is not optimal and the performance team, with great pleasure, announces that release 6.5 managed to greatly optimize sharing of data between many subsystems in the NetBeans IDE.

The performance team lead initiated or oversaw necessary architecture changes to prevent this dynamic data loss - e.g. situation when the same or similar data were unnecessarily computed multiple times. With new APIs between mime type resolvers and data object loaders we managed to reduce the time needed to expand folder and package view by order of magnitudes and as such greatly improve developer productivity.

"At Salesforce.com, we have a module with over 600 packages. The difference in latency when first expanding the parent node for all those packages has been reduced by an order of magnitude. It doesn't feel instantaneous, but it's just a few seconds, compared to "go get a cup of tea and come back" on our typical developer workstations." -- Rich Unger, Salesforce.com

Relationship with Customers

From time to time NetBeans IDE customers complain about general slowness on our mailing lists. In some situations our customers even report performance bugs. This has been common way of cooperation for many release. The performance team is proud to announce that this relation with customers has been taken to yet another level during 6.5 timeframe.

Not only we listen to voice of our customers, however we proactively encourage them to send us performance feedback in easy way. Using special performance oriented reporting agents as part of NetBeans revolutionary UIGesturesCollector infrastructure we can detect in the field delays in responsibility of the NetBeans IDE or even situations when the user gets distracted and leaves the IDE to read news, mails, etc. By analysing the actions taken before such distraction point we will be able to identify major performance bottlenecks and concentrate on their improvements in NetBeans .Next release.

Our customers are special, yet we have not used this difference much in the past. All customers of NetBeans IDE are programmers and as such we can ask them to provide more detailed data on the actual behaviour of the IDE on in the field. The only needed thing is to build non-standard relationship, provide guidance and encouragement and we can get data of unvaluable quality. For example with the help of profiler team and their support for sharable profiling points, we managed to instruct our customer, Nigel, to take in the field visualvm snapshot, send it to us and help us identify and fix the faulty subsystems responsible for 40s and 18s delays he observed.

Image:nigel_Fitness65PressRelease.png

This technical relationship with Nigel and others helped us to speed up evaluation of VOCs, in some situations even make the evaluation possible and optimize the usage of NetBeans IDE in real situations, on real projects, on computers running in real corporate development environments by our users using NetBeans IDE.

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