1
0
mirror of git://projects.qi-hardware.com/wernermisc.git synced 2024-11-15 08:34:05 +02:00
wernermisc/qpkg/TODO
Werner Almesberger 03c5e4ffe7 qpkg: optimize duplicate lookup when inserting a new name
- jrb.h, jrb.c (jrb_find_or_insert): new function to look for a node and
  to insert a new one if not found
- id.c (make_id): use jrb_find_or_insert to avoid looking up new nodes
  twice
- TODO: report the improvement
2010-11-19 22:20:15 -03:00

39 lines
1.4 KiB
Plaintext

- optimize the search trees. Right now, we have 81812 calls to make_id
for 14601 packages, resulting in 7420560 calls to comp_id.
There can be at most 2 new identifiers per package (package name and
version), so a perfectly balanced tree should have a depth of no more
than 14. If we assume that each call to make_id searches to the bottom,
we'd get 1145368 calls to comp_id, about 15% of the current number.
So the tree is clearly degenerated.
Update: after switching to red-black trees, we get only 1497604 calls
to comp_id. This is 130% of the "good case" estimate above. Insertion
of a new node is currently done with two lookups, so we'll get rid of
some more lookups after further optimization.
Update: after merging the two lookups per new node into one, we're at
1172642 calls to comp_id, or 102% of the predicted "good case".
- check whether introducing a new package would cause a conflict
- compile the list of conflicts of installed packages
- handle Provides:
- if there are multiple choices, try to prefer more recent versions
- sort prerequisites such that they can be installed in the specified order
- consider Architecture:
- what to do with explicit and implicit replacement ?
- if we can't resolve the prerequisites, give at least a hint of what one
can do to improve the situation
- check database for internal consistency
- implement keyword search