igzip: Add some compile time options to igzip_inflate_perf

Allow for running igzip_inflate_perf with zlib -1, zlib -9, and igzip
compression. Also add a parameter to allow comparing igzip inflate's performance
to zlib inflate's performance.

Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
This commit is contained in:
Roy Oursler 2016-04-15 17:44:18 -07:00 committed by Greg Tucker
parent 09a5a243bf
commit c233946b0a

View File

@ -29,13 +29,16 @@
#include <stdio.h>
#include <assert.h>
#include <zlib.h>
#include "huff_codes.h"
#include "inflate.h"
#include "test.h"
#if defined(ZLIB_9) || defined(ZLIB_1) || defined(ZLIB_COMPARE)
# include <zlib.h>
#endif
#define BUF_SIZE 1024
#define MIN_TEST_LOOPS 100
#define MIN_TEST_LOOPS 8
#ifndef RUN_MEM_SIZE
# define RUN_MEM_SIZE 1000000000
#endif
@ -100,7 +103,7 @@ int main(int argc, char *argv[])
fprintf(stderr, "Can't allocate temp buffer memory\n");
exit(0);
}
inbuf_size = compressBound(infile_size);
inbuf_size = 2 * infile_size;
inbuf = malloc(inbuf_size);
if (inbuf == NULL) {
fprintf(stderr, "Can't allocate input buffer memory\n");
@ -111,12 +114,93 @@ int main(int argc, char *argv[])
fprintf(stderr, "Can't allocate output buffer memory\n");
exit(0);
}
fread(tempbuf, 1, infile_size, in);
#ifdef ZLIB_9
printf("Using zlib -9 compression\n");
i = compress2(inbuf, &inbuf_size, tempbuf, infile_size, 9);
if (i != Z_OK) {
printf("Compression of input file failed\n");
exit(0);
}
inbuf += 2;
inbuf_size -= 2;
#elif defined(ZLIB_1)
printf("Using zlib -1 compression\n");
i = compress2(inbuf, &inbuf_size, tempbuf, infile_size, 1);
if (i != Z_OK) {
printf("Compression of input file failed\n");
exit(0);
}
inbuf += 2;
inbuf_size -= 2;
#else
printf("Using igzip compression\n");
struct isal_zstream stream;
isal_deflate_init(&stream);
stream.end_of_stream = 1; /* Do the entire file at once */
stream.flush = NO_FLUSH;
stream.next_in = tempbuf;
stream.avail_in = infile_size;
stream.next_out = inbuf;
stream.avail_out = inbuf_size;
#ifdef IGZIP_CUSTOM
struct isal_huff_histogram histogram;
struct isal_hufftables hufftables_custom;
memset(&histogram, 0, sizeof(histogram));
isal_update_histogram(inbuf, infile_size, &histogram);
isal_create_hufftables(&hufftables_custom, &histogram);
stream.hufftables = &hufftables_custom;
#endif
isal_deflate(&stream);
if (stream.avail_in != 0) {
printf("Compression of input file failed\n");
exit(0);
}
#endif
#ifdef ZLIB_COMPARE
{
printf("igzip_zlib_inflate_perf: %s %d iterations\n", argv[1], iterations);
/* Read complete input file into buffer */
struct perf start, stop;
perf_start(&start);
z_stream gstream;
for (i = 0; i < iterations; i++) {
gstream.next_in = inbuf;
gstream.avail_in = inbuf_size;
gstream.zalloc = Z_NULL;
gstream.zfree = Z_NULL;
gstream.opaque = Z_NULL;
if (0 != inflateInit2(&gstream, -15)) {
printf("Fail zlib init\n");
exit(-1);
}
gstream.next_out = outbuf;
gstream.avail_out = outbuf_size;
check = inflate(&gstream, Z_FINISH);
if (check != 1) {
printf("Error in decompression with error %d\n", check);
break;
}
}
perf_stop(&stop);
printf(" file %s - in_size=%d out_size=%lu iter=%d\n", argv[1],
infile_size, gstream.total_out, i);
printf("igzip_file: ");
perf_print(stop, start, (long long)infile_size * i);
printf("End of igzip_zlib_inflate_perf\n\n");
}
#endif
printf("isal_inflate_stateless_perf: %s %d iterations\n", argv[1], iterations);
/* Read complete input file into buffer */
fclose(in);
@ -124,7 +208,7 @@ int main(int argc, char *argv[])
perf_start(&start);
for (i = 0; i < iterations; i++) {
isal_inflate_init(&state, inbuf + 2, inbuf_size - 2, outbuf, outbuf_size);
isal_inflate_init(&state, inbuf, inbuf_size, outbuf, outbuf_size);
check = isal_inflate_stateless(&state);
if (check) {
@ -133,7 +217,6 @@ int main(int argc, char *argv[])
}
}
perf_stop(&stop);
printf(" file %s - in_size=%d out_size=%d iter=%d\n", argv[1],
infile_size, state.out_buffer.total_out, i);
@ -143,6 +226,9 @@ int main(int argc, char *argv[])
printf("End of isal_inflate_stateless_perf\n\n");
fflush(0);
#if defined(ZLIB_1) || defined(ZLIB_9)
inbuf -= 2;
#endif
free(inbuf);
free(outbuf);
free(tempbuf);