Wednesday, January 9, 2008

Service invocation performance

The whole service invocation exercise would not be complete without having an estimate of the performance of a service invocation. Activity invocation turned to be rather slow, due to the complex activity lifecycle transitions the invocation involves. Now those transitions would not occur when invoking services so I expected improvements here.

The measurement client can be downloaded from here. Note that this is just the client therefore the service application from the Invoking services post material also needs to be installed. Don't forget to update the sdk-folder and android-tools properties in the Ant build files. The client and the service applications need to be installed separately with adb install as described at an earlier post.

There are no surprises in the performance measurement client. As there are no lifecycle transitions in the client, the measurement could be performed in a simple for cycle. The average invocation time turned to be around 4 msec which is about 5-10 times faster than the activity invocation performance but is still something like 1000 times slower than a simple in-process Java call.

4 comments:

Maxim Yudin said...

It's interesting post :)

Gabor Paller said...

I would like your Android blog if I still spoke Russian. :-) I can still read Cyrillic but I hardly remember any words. :-)

Well, actually this is what I expected. Android has nice application separation but it comes with a price. OSGi has much better invocation performance but offers basically no separation.

Tough trade-off.

Maxim Yudin said...

Probably, I will write new articles on english and russian article, thought I know english language not very well.

Gabor Paller said...

Then share only program code, that's an universal language. :-)