Some more optimizations...

Le 4/27/12 5:37 PM, Emmanuel Lécharny a écrit :

Today, I did some profiling with the latest version of Yourkit, and I was able to tweak the server here and there to get some speed improvement. Here are the results I get :

on Trunk :

OBJECT level search, 19 680 entries returned per second (we only get one entry) ONE level search, 27 900 entries returned per second (we get five entries) SUBTREE level search, 17870 entries returned per second (we get 10 entries)

Keep in mind that those tests are done with an embedded server, it does not go through any network layer. So to speak, it gives the raw caacity of the server to deliver entries, no more.

On the branch now :
OBJECT level search, 33 373 entries returned per second (we only get one entry) : this is a 70% improvement ! ONE level search, 45 695 entries returned per second (we get five entries): this is a 63% improvement ! SUBTREE level search, 35 300 entries returned per second (we get 10 entries): this is a 97% improvement !!!

I'm quite confident that we can still improve the performances of the server, I have just scratched the surface here :)

Latest numbers, after some more cleanup and improvement :

OBJECT level search, 35 253 entries returned per second (we only get one entry) : this is a 73% improvement ONE level search, 63 855 entries returned per second (we get five entries): this is a 123% improvement SUBTREE level search, 68 560 entries returned per second (we get 10 entries): this is a 181% improvement

I have also measured the server-integ tests (so through the network). The results are less impressive.

Trunk Server-integ tests :
OBJECT level search, 2 726 entries returned per second (we only get one entry)
ONE level search, 4 999 entries returned per second (we get five entries)
SUBTREE level search, 2 425 entries returned per second (we get 10 entries)

Branch Server-integ tests :
OBJECT level search, 2 739 entries returned per second (we only get one entry) : barely the same ONE level search, 5 229 entries returned per second (we get five entries) : this is a 4,6% improvement SUBTREE level search, 3 079 entries returned per second (we get 10 entries) : this is a 27% improvement

One might wonder why we get such numbers when the core-integ tests are way higher. The reason is that we have to encode and decode the entries, and the very same for the SerahcRequest itself. This is an extreely costly operation on the client side : barely one third is consummed by the client decoding the entries. Would we have the injector on another machine, we would have way better numbers.

The result encoding is also a costly operation, but there is little we can do here (except may be keep the encoded Entry somewhere in a cache, bt I' not sure that would be very efficient). Also as the server is waiting for the client to have processed the entries, we really depend on the client, and it's hard to get the server beng loaded with such a scenario.

I'm done for today, I'll check if I can squeeze more perfs tomorrow.

nn guys !

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to