Hi, I applied one of the modifications I suggested in one of my previous mail : we pre-compte the set of candidates in the count() method, attach the set to the filter node (thanks god, we have a way to attach anything to the Node structure !) and use this set instead of constructing it again in the computeEquality() method. The gain is clear :
CoreSession =========== Mavibot 10K entries ------------------- Add : 80s, 125/s Search : 5091/s ---> 15000/s Jdbm 10k entries ---------------- Add : 167s, 59/s Search : 654/s --- 10009/s NetworkeSession =============== Mavibot 10K entries ------------------- Add : 85s, 117/s Search : 1802/s ---> 3467/s Jdbm 10k entries ---------------- Add : 176s, 56/s Search : 506/s --- 3009/s That more than doubled the server's performance... We have many more ways to improve the server... But still, this was a second easy improvement after the previous 45% gain ! Side note 1 : the old JDBM performances were horribly low. It seems really strange that we are now able to get 6 times better result. I will re-run the tests without my last change to see what I get. Side note 2 : for the network tests, the cost of the encoding/decoding is high, and is paid twice (on the server and on the client). This is why we have much lower performances compared to the CoreSession tests. -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com
