postgresql/src
Heikki Linnakangas 031cc55bbe Optimize pglz compressor for small inputs.
The pglz compressor has a significant startup cost, because it has to
initialize to zeros the history-tracking hash table. On a 64-bit system, the
hash table was 64kB in size. While clearing memory is pretty fast, for very
short inputs the relative cost of that was quite large.

This patch alleviates that in two ways. First, instead of storing pointers
in the hash table, store 16-bit indexes into the hist_entries array. That
slashes the size of the hash table to 1/2 or 1/4 of the original, depending
on the pointer width. Secondly, adjust the size of the hash table based on
input size. For very small inputs, you don't need a large hash table to
avoid collisions.

Review by Amit Kapila.
2013-07-01 11:00:14 +03:00
..
backend Optimize pglz compressor for small inputs. 2013-07-01 11:00:14 +03:00
bin Update pg_resetxlog's documentation on multixacts 2013-06-27 15:32:58 -04:00
common pgindent run for release 9.3 2013-05-29 16:58:43 -04:00
include Fix cpluspluscheck in checksum code 2013-06-30 10:25:43 -04:00
interfaces ecpg: Consistently use mm_strdup() 2013-06-29 22:14:56 -04:00
makefiles Blind attempt at fixing the non-MSVC Windows builds 2013-02-22 11:51:15 -03:00
pl PL/Python: Fix type mixup 2013-06-13 21:42:42 -04:00
port Send SIGKILL to children if they don't die quickly in immediate shutdown 2013-06-28 17:49:46 -04:00
template Remove _FORTIFY_SOURCE 2012-10-10 21:42:38 -04:00
test ALTER TABLE ... ALTER CONSTRAINT for FKs 2013-06-29 00:27:30 +01:00
timezone pgindent run for release 9.3 2013-05-29 16:58:43 -04:00
tools Cooperate with the Valgrind instrumentation framework. 2013-06-26 20:22:25 -04:00
tutorial Modernize string literal syntax in tutorial example. 2013-01-19 17:20:32 -05:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
bcc32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Create libpgcommon, and move pg_malloc et al to it 2013-02-12 11:21:05 -03:00
Makefile.global.in Remove whitespace from end of lines 2013-05-30 21:05:07 -04:00
Makefile.shlib Add pkg-config files for libpq and ecpg libraries 2013-03-31 16:58:40 -04:00
nls-global.mk NLS: Use msgmerge --previous option 2012-12-13 23:12:12 -05:00
win32.mak Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00