checkasm: Use a self-balancing tree
authorHenrik Gramner <henrik@gramner.com>
Fri, 25 Sep 2015 16:56:00 +0000 (18:56 +0200)
committerHenrik Gramner <henrik@gramner.com>
Sat, 26 Sep 2015 13:11:11 +0000 (15:11 +0200)
commit2ab65b652dc5e69fb738f1afdc55f7a2f9cbc0e0
treee4a7148f1a80644621e848a31d72ce19213442ec
parent2d221d9e069e6269cb41f3678f2734800171d87b
checkasm: Use a self-balancing tree

Tested functions are internally kept in a binary search tree for efficient
lookups. The downside of the current implementation is that the tree quickly
becomes unbalanced which causes an unneccessary amount of comparisons between
nodes. Improve this by changing the tree into a self-balancing left-leaning
red-black tree with a worst case lookup/insertion time complexity of O(log n).

Significantly reduces the recursion depth and makes the tests run around 10%
faster overall. The relative performance improvement compared to the existing
non-balanced tree will also most likely increase as more tests are added.
tests/checkasm/checkasm.c