Skip to content
Alin Dreghiciu edited this page Sep 12, 2013 · 1 revision

Various benchmarks and other flammable content!

OSGi service proxy microbenchmark

This is a very simple (perhaps simplistic!) microbenchmark that calculates how much overhead on average the given OSGi service proxy adds to each method call. It measures how long the raw implementation takes and subtracts this from however long the proxied service took.

It does not take into account the flexibility/features of each proxy implementation, but merely looks at the overhead cost.

  1. download and unzip the service proxy microbenchmark

  2. import the contents into Eclipse as an existing project

  3. open OSGiServiceProxyTest.target and set it as the target platform:

  4. right-click on OSGiServiceProxyTest.launch and select Run As... -> OSGiServiceProxyTest

  5. you should see results similar to this:

    osgi> Testing OSGi service proxy overhead...

    Guice-Peaberry: 649.00 ns/call Spring-DM: 3718.00 ns/call

Which shows a lot less overhead when using the peaberry service proxy.

Basic bundle footprint

This is another simple 'benchmark' where we look at the size of the minimum bundle set required to run the above testcase.

Of course Spring-DM provides a lot of additional functionality over Guice-Peaberry, but we're interested in the minimum footprint possible.

   8K com.springsource.org.aopalliance-1.0.0.jar
 632K guice-snapshot-20090105.jar
 176K peaberry-1.0-rc1.jar

816K Guice-Peaberry 1.0-rc1

   8K com.springsource.org.aopalliance-1.0.0.jar
  24K com.springsource.slf4j.api-1.5.6.jar
   8K com.springsource.slf4j.nop-1.5.6.jar
  20K com.springsource.slf4j.org.apache.commons.logging-1.5.6.jar
 320K spring-aop-2.5.6.jar
 480K spring-beans-2.5.6.jar
 468K spring-context-2.5.6.jar
 280K spring-core-2.5.6.jar
 352K spring-osgi-core-1.2.0-m2.jar
 116K spring-osgi-extender-1.2.0-m2.jar
  36K spring-osgi-io-1.2.0-m2.jar

2112K Spring-DM 1.2.0-m2

As you can see Guice-Peaberry takes up less than half the space of the smallest Spring-DM setup.