res_sorcery_config: Improve object lookup times.
authorJoshua Colp <jcolp@digium.com>
Sun, 15 Feb 2015 17:43:21 +0000 (17:43 +0000)
committerJoshua Colp <jcolp@digium.com>
Sun, 15 Feb 2015 17:43:21 +0000 (17:43 +0000)
commite78dd398857924e7617b388262d5ff37a0bf6232
tree6791c2c0d19d7e88a9e66018ee122431062fb42b
parente6fe69b76c1f01b2c1fe3ce0b534494e60aa819b
res_sorcery_config: Improve object lookup times.

The res_sorcery_config module currently uses a fixed bucket
size of 53. This means that depending on the number of objects
you either end up with excess buckets or a lot of collisions.
Due to the way that res_sorcery_config is implemented it's actually
possible to make the bucket size dynamic based on the number of
objects. This is due to the fact that each loading of the config file
produces a new container and does not modify the existing one.
This change uses the number of expected objects and finds a prime
number near it. In practice depending on the number of objects this
can speed up lookups anywhere from 2X to 15X. This change also removes
the lock from the container as it is not needed.

Review: https://reviewboard.asterisk.org/r/4423/
........

Merged revisions 431841 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_sorcery_config.c