Hi guys,

I just committed some more improvements. By removing the extra clone creation, combined with the removal of the eagerlyPopulateFields() method for the search request, I was able to speedup the server a lot.

When running a search operation on a single entry, with a scope=OBJECT and filter = (ObjectClass=*), the performances I got was (on perftest server) :
- baseline : 128 seconds to do 1M searches, for 7799 requests per second
- without the eagerlyPopulate method : 75 seconds to do 1M searches, for 13327 requests per second - without the double clone : 98,2 seconds to do 1M searches, for 10178 requests per seconds - both combined : 60 seconds to do 1M seraches, for 166670 requests per seconds. This is a 2.1 x improvements.

Note that those numbers are just for a direct call to core-session, they don't include the network layer, nor the encoding/decoding of requests and responses.

I have some more area to explore, like we are normalizing 3 times a DN, when one should be enough. And as normalization is a costly process ...

More to come.

PS : it's fun, and incredible how you can squeeze performances out of some code when you have time and when the code is not totally crippled !

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


Reply via email to