'. '

NetbinoxPerformance

From APIDesign

Revision as of 17:47, 3 April 2010 by JaroslavTulach (Talk | contribs)
Jump to: navigation, search

Performance has been my main focus during few recent years. I was member of NetBeans performance team and among other improvements we managed to speed the NetBeans start time from 60s to less than 20s. This has been achieved primarily by eliminating I/O operations which are quite slow when the application starts for the first time. An important piece of the whole picture is also the startup cache which eliminates the need to open JAR files during first start. As a result the NetBeans platform become the fastest starting up modular application framework in Java.

During our work on NetBeans 6.9 we decided to provide smooth support for OSGi. We started with the Netigso project - a general infrastructure to plug an OSGi compliant container into NetBeans runtime. We also created a subproject called Netbinox to specifically use Equinox container. The whole system has been working quite fine for a few months (if you need desktop, Swing and OSGi, don't hesitate to try), but only recently we focused our attention to performance. We wanted to give the OSGi application the same performance boost we have for NetBeans modules.

It's Getting Faster!

I am glad to report that recently we improved Netbinox so much that our testing application (together with some parts of NetBeans) starts faster than in Equinox itself.

Moreover this is just a toy application with a few JARs, but when you imagine really large apps, the benefits of our startup cache will be even more visible. Have a look at our sources, if you are not afraid of their GPL license!

Also, we will continue to optimize our system. Right now we are waisting ~5s somewhere soon in the initialization sequence, so the optimal time shall be even better. We are looking towards 30% more efficiency than Equinox!

One question for the OSGi gurus however: How can I install a bundle into the container without the Equinox or Felix copying the content of my JAR into their own caches?

<comments/>

Personal tools
buy