I've backported header.c changes from HEAD to the rpm-4.5 branch,
mostly to unsnarl multiple development changes currently on HEAD.

AFAIK, the changes on the rpm-4.5 branch are now complete. There
is a order of magnitude (that's 10x, not 10%, faster) improvement in performance in array queries by caching the array instead of re-loading for each element:

[EMAIL PROTECTED] wdj]$ time rpm -qa --xml --notagcache > /dev/null

real    1m28.452s
user    1m27.669s
sys     0m0.479s

[EMAIL PROTECTED] wdj]$ time rpm -qa --xml --tagcache > /dev/null

real    0m11.803s
user    0m11.284s
sys     0m0.455s

[EMAIL PROTECTED] wdj]$ time rpm -qa --xml --notagcache > /dev/null

real    1m28.413s
user    1m27.934s
sys     0m0.403s

The patch should apply (and should be applied unless you want slower
queries for some obscure reason ;-) to all versions of rpm since rpm-4.1 without too much difficulty, and likely can be pushed all the way back to rpm-4.0.x
without too much pain.

There's a "jbj_before_tag_container" tag on the -r rpm-4_5 branch ainrpm5.org
cvs that can be used to generate the diff:

    cvs -d :ext:[EMAIL PROTECTED]:/v/rpm/cvs get -r rpm-4_5 rpm
    cd rpm
cvs -d :ext:[EMAIL PROTECTED]:/v/rpm/cvs diff -r jbj_before_tag_container

I've also fixed an obscure hack from 8/1998 with RPM_I18NSTRING_TYPE.
While iterating tags in a header (or using the useless headerGetRawEntry), the RPM_I18NSTRING_TYPE is (until I just fixed) being returned as an argv array. Nothing wrong with that per-se, except that the RPM_I18NSTRING_TYPE
tags are all string) and scalar, not array) valued:
    Group:
    Description:
    Summary:

So RPM_I18NSTRING_TYPE likely needs to be removed, replacing
with a more general associative array type, but that's a different topic ...

Meanwhile, could someone build and check the rpm-4.5 branch please?

Back to unborking HEAD ...

73 de Jeff

______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        [email protected]

Reply via email to