On Sun, Jan 1, 2012 at 10:49 PM, Allan McRae <[email protected]> wrote: > On 01/01/12 13:07, Dan McGee wrote: >> This reduces the number of regcomp() calls when parsing delta entries in >> the database from once per entry to once for the entire context handle >> by storing the compiled regex data on the handle itself. Just as we do >> with the cURL handle, we initialize it the first time it is needed and >> free it when releasing the handle. >> >> A few other small tweaks to the parsing function also take place, >> including using the stack to store the transient and short file size >> string while parsing it. >> >> When parsing a sync database with 1378 delta entries, this reduces the >> time of a `pacman -Sl deltas` operation by 50% from 0.22s to 0.12s. >> >> Signed-off-by: Dan McGee <[email protected]> >> --- >> >> Test database, built from my local cache that was used for above numbers: >> https://dev.archlinux.org/~dan/deltas.db >> >> Should be useful for delta-related code in general. >> >> lib/libalpm/delta.c | 33 +++++++++++++++++++-------------- >> lib/libalpm/delta.h | 2 +- >> lib/libalpm/handle.c | 3 +++ >> lib/libalpm/handle.h | 5 +++++ >> 4 files changed, 28 insertions(+), 15 deletions(-) >> >> diff --git a/lib/libalpm/delta.c b/lib/libalpm/delta.c >> index 165cdef..726f03c 100644 >> --- a/lib/libalpm/delta.c >> +++ b/lib/libalpm/delta.c >> @@ -273,29 +273,32 @@ alpm_list_t SYMEXPORT >> *alpm_pkg_unused_deltas(alpm_pkg_t *pkg) >> * This function assumes that the string is in the correct format. >> * This format is as follows: >> * $deltafile $deltamd5 $deltasize $oldfile $newfile >> + * @param handle the context handle >> * @param line the string to parse >> * @return A pointer to the new alpm_delta_t object >> */ >> -/* TODO this does not really belong here, but in a parsing lib */ >> -alpm_delta_t *_alpm_delta_parse(char *line) >> +alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line) > > > Changed function prototype so should also change the one usage of this > function in the codebase...
Good catch of course, my rebase-foo was not working well and this got swallowed into a different patch- thanks for actually testing these. :) -Dan
