bitbake: codeparser/data_smart: Optimise parsing speed
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 3 Dec 2013 12:10:05 +0000 (12:10 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 3 Dec 2013 17:45:53 +0000 (17:45 +0000)
commitc17176c295a0344324b6acc09b1b5199e76837d1
tree9458fbf2470f68f6951994e06b2b0c24eaebe5c1
parentd3ce8715ac949d34d97f96307710a2d8def0c191
bitbake: codeparser/data_smart: Optimise parsing speed

The previous "contains" changes caused a ~3% parsing speed impact.
Looking at the cause of those changes was interesting:

* Use of defaultdict was slower than just checking for missing entries
  and setting them when needed.
* Even the "import collections" adversely affects parsing speed
* There was a missing intern function for the contains cache data
* Setting up a log object for each variable has noticeable overhead
  due to the changes in the code paths uses, we can avoid this.
* We can call getVarFlag on "_content" directly within VariableParse
  for a noticeable speed gain since its a seriously hot code path.

This patch therefore tweaks the code based on the above observations to
get some of the speed back.

(Bitbake rev: fca802187a2a30686a8a07d2b6b16a3e5716e293)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/codeparser.py
bitbake/lib/bb/data_smart.py