Go to file
Alexey Tourbin 17452dba48 set.c: reimplmeneted downsampling unsing merges
Most of the time, downsampling is needed for Provides versions,
which are expensive, and values are reduced by only 1 bit, which
can be implemented without sorting the values again.  Indeed,
only a merge is required.  The array v[] can be split into two
parts: the first part v1[] and the second part v2[], the latter
having values with high bit set.  After the high bit is stripped,
v2[] values are still sorted.  It suffices to merge v1[] and v2[].

Note that, however, a merge cannot be done inplace, and also we have
to support 2 or more downsampling steps.  We also want to avoid copying.
This requires careful buffer management - each version needs two
alternate buffers.

callgrind annotations for "apt-cache <<<unmet", previous commit:
2,743,058,808  PROGRAM TOTALS
1,068,102,605  lib/set.c:decode_base62_golomb
  509,186,920  lib/set.c:rpmsetcmp
  131,678,282  stdlib/msort.c:msort_with_tmp'2
   93,496,965  sysdeps/x86_64/strcmp.S:__GI_strcmp
   91,066,266  sysdeps/x86_64/memcmp.S:bcmp
   83,062,668  sysdeps/x86_64/strlen.S:__GI_strlen
   64,584,024  sysdeps/x86_64/memcpy.S:memcpy

callgrind annotations for "apt-cache <<<unmet", this commit:
2,683,295,262  PROGRAM TOTALS
1,068,102,605  lib/set.c:decode_base62_golomb
  510,261,969  lib/set.c:rpmsetcmp
   93,692,793  sysdeps/x86_64/strcmp.S:__GI_strcmp
   91,066,275  sysdeps/x86_64/memcmp.S:bcmp
   90,080,205  stdlib/msort.c:msort_with_tmp'2
   83,062,524  sysdeps/x86_64/strlen.S:__GI_strlen
   58,165,691  sysdeps/x86_64/memcpy.S:memcpy
2012-02-17 14:14:25 +04:00
.gear added .gitignore, improved support for in-tree building 2010-08-17 19:20:40 +04:00
autodeps autodeps/linux.*: fix regression introduced along with the recent cleanup 2011-05-24 23:20:04 +00:00
build rpmbuild: add "-bt" %check-only option 2011-12-06 16:25:14 +00:00
doc %_sharedstatedir: change to /var/lib 2012-01-12 22:13:54 +00:00
lib set.c: reimplmeneted downsampling unsing merges 2012-02-17 14:14:25 +04:00
po GROUPS: add Development/Python3 2012-01-20 09:20:37 +00:00
python python: backport forceArray changes from rpm5. 2011-01-16 10:18:05 +03:00
rpmdb Sanity check region offset range on headerLoad() 2011-10-10 23:02:13 +00:00
rpmio macro.c: fixed macroTable corruption in freeArgs 2011-01-06 05:52:17 +03:00
scripts introduce brp-hardlink_pyo_pyc (splitted from brp-bytecompile_python) 2012-01-25 14:23:12 +00:00
tools Remove unused variable in debugedit 2011-05-15 22:55:00 +00:00
.gitignore removed brp-strip & related macros 2011-09-23 03:36:28 +04:00
.lclintrc re-added .lclintrc and .cvsignore files from CVS 2002-03-25 20:27:37 +00:00
build.c build.c: adjust for macroTableSize change 2011-01-06 05:00:53 +03:00
build.h Initial revision 2002-03-25 20:16:26 +00:00
CHANGES s/relocateable/relocatable/ (jbj) 2009-03-08 20:12:18 +03:00
configure.in introduce brp-hardlink_pyo_pyc (splitted from brp-bytecompile_python) 2012-01-25 14:23:12 +00:00
COPYING Initial revision 2002-03-25 20:16:26 +00:00
CREDITS Initial revision 2002-03-25 20:16:26 +00:00
debug.h Initial revision 2002-03-25 20:16:26 +00:00
Doxyfile.in build/files.c (addFile): replaced myftw() with fts(3) 2011-01-15 10:35:58 +03:00
Doxyheader Initial revision 2002-03-25 20:16:26 +00:00
gendiff gendiff: I guess "||" is somewhat better than "&&" (at least two bytes shorter!) 2007-01-25 00:32:34 +03:00
GROUPS GROUPS: add Development/Python3 2012-01-20 09:20:37 +00:00
INSTALL sync with rpm4 branch: s/redhat/RPM/g 2002-03-25 20:44:16 +00:00
installplatform 4.0.4-alt97.M50.2 2009-03-10 14:39:35 +03:00
macros.in %_sharedstatedir: change to /var/lib 2012-01-12 22:13:54 +00:00
Makefile.am added .gitignore, improved support for in-tree building 2010-08-17 19:20:40 +04:00
platform.in %_sharedstatedir: change to /var/lib 2012-01-12 22:13:54 +00:00
README Initial revision 2002-03-25 20:16:26 +00:00
README.ALT-ru_RU.UTF-8 removed brp-strip & related macros 2011-09-23 03:36:28 +04:00
rpm2cpio.c psm.c, rpm2cpio.c: updated for xz decompression 2009-09-24 12:35:37 +04:00
rpm-4_0.spec 4.0.4-alt100.45 2012-01-25 14:25:17 +00:00
rpm-build.buildreq rpm-build.buildreq: added /usr/lib/rpm/macros.d/* 2008-12-16 03:34:01 +03:00
rpminit Removed cvsid tags. 2006-05-14 17:05:34 +04:00
rpminit.1 Removed cvsid tags. 2006-05-14 17:05:34 +04:00
rpmpopt.in rpmbuild: add "-bt" %check-only option 2011-12-06 16:25:14 +00:00
rpmqv.c rpmbuild: add "-bt" %check-only option 2011-12-06 16:25:14 +00:00
rpmrc.in rpmrc: add armv6l and armv7l, change default arm from armv4l to armv5te 2010-10-06 14:25:09 +00:00
system.h system.h: moved AUTO_REALLOC from depends.h 2011-01-06 03:26:09 +03:00
TODO Initial revision 2002-03-25 20:16:26 +00:00

This is RPM, the Red Hat Package Manager.

The latest releases are always available at:

	ftp://ftp.rpm.org/pub/rpm

Additional RPM documentation (papers, slides, HOWTOs) can also be
found at the same site, as well as http://www.rpm.org.

There is a mailing list for discussion of RPM issues, rpm-list@redhat.com.
To subscribe, send a message to rpm-list-request@redhat.com with the word
"subscribe" in the subject line.

RPM was originally written by:

    Erik Troan <ewt@redhat.com>
    Marc Ewing <marc@redhat.com>

See the CREDITS file for a list of folks who have helped us out
tremendously.  RPM is Copyright (c) 1998 by Red Hat Software, Inc.,
and may be distributed under the terms of the GPL and LGPL (see  the
file COPYING for details).