diff options
author | Patrick Georgi <pgeorgi@chromium.org> | 2017-01-11 15:26:58 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2017-01-12 21:40:25 +0100 |
commit | c88d16baaf3e88029b40d43eb254e90613b95187 (patch) | |
tree | b1b4e8fc15ec880db97d42cfbfb7adcd85d445ff /util/cbfstool/common.h | |
parent | 8474e7d7e83e92f3d7118311e2e35dc86dcc3ef5 (diff) | |
download | coreboot-c88d16baaf3e88029b40d43eb254e90613b95187.tar.xz |
util/cbfstool: Add cbfs-compression-tool
cbfs-compression-tool provides a way to benchmark the compression
algorithms as used by cbfstool (and coreboot) and allows to
pre-compress data for later consumption by cbfstool (once it supports
the format).
For an impression, the benchmark's results on my machine:
measuring 'none'
compressing 10485760 bytes to 10485760 took 0 seconds
measuring 'LZMA'
compressing 10485760 bytes to 1736 took 2 seconds
measuring 'LZ4'
compressing 10485760 bytes to 41880 took 0 seconds
And a possible use for external compression, parallel and non-parallel
(60MB in 53 files compressed to 650KB on a machine with 40 threads):
$ time (ls -1 *.* |xargs -n 1 -P $(nproc) -I '{}' cbfs-compression-tool compress '{}' out/'{}' LZMA)
real 0m0.786s
user 0m11.440s
sys 0m0.044s
$ time (ls -1 *.* |xargs -n 1 -P 1 -I '{}' cbfs-compression-tool compress '{}' out/'{}' LZMA)
real 0m10.444s
user 0m10.280s
sys 0m0.064s
Change-Id: I40be087e85d09a895b1ed277270350ab65a4d6d4
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/18099
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'util/cbfstool/common.h')
-rw-r--r-- | util/cbfstool/common.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h index d4b7021428..85dfdeb589 100644 --- a/util/cbfstool/common.h +++ b/util/cbfstool/common.h @@ -166,6 +166,18 @@ enum comp_algo { CBFS_COMPRESS_LZ4 = 2, }; +struct typedesc_t { + uint32_t type; + const char *name; +}; + +static const struct typedesc_t types_cbfs_compression[] = { + {CBFS_COMPRESS_NONE, "none"}, + {CBFS_COMPRESS_LZMA, "LZMA"}, + {CBFS_COMPRESS_LZ4, "LZ4"}, + {0, NULL}, +}; + comp_func_ptr compression_function(enum comp_algo algo); decomp_func_ptr decompression_function(enum comp_algo algo); |