From c2a06db69de7562024524a89a7b0f0f7e61c5999 Mon Sep 17 00:00:00 2001
From: Ian Wienand <ianw@vmware.com>
Date: Fri, 9 Sep 2011 20:19:35 +0200
Subject: gzip: new GZIP_BIG_MEM option

Enabling the config option on my standard linux box and zipping a
random 250mb file:

small mem: 21.85user 0.44system 0:22.35elapsed
big mem:   13.45user 0.46system 0:13.94elapsed

Signed-off-by: Ian Wienand <ianw@vmware.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 archival/Config.src | 10 ++++++++++
 archival/gzip.c     |  6 +++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

(limited to 'archival')

diff --git a/archival/Config.src b/archival/Config.src
index 81788ecd9..9f4908178 100644
--- a/archival/Config.src
+++ b/archival/Config.src
@@ -187,6 +187,16 @@ config FEATURE_GZIP_LONG_OPTIONS
 	help
 	  Enable use of long options, increases size by about 106 Bytes
 
+config GZIP_BIG_MEM
+       bool "Trade memory for gzip speed"
+       default n
+       depends on GZIP
+       help
+         Enable big memory options for gzip, including larger I/O
+         buffers and bigger hash tables.  Faster, but uses at least
+         twice as much memory.  Select if speed is more important than
+         memory use.
+
 config LZOP
 	bool "lzop"
 	default y
diff --git a/archival/gzip.c b/archival/gzip.c
index 403eb4dcb..0e0b68142 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -81,7 +81,11 @@ aa:      85.1% -- replaced with aa.gz
 
 /* ===========================================================================
  */
-#define SMALL_MEM
+#if ENABLE_GZIP_BIG_MEM
+# define BIG_MEM
+#else
+# define SMALL_MEM
+#endif
 
 #ifndef INBUFSIZ
 #  ifdef SMALL_MEM
-- 
cgit v1.2.3