From b77825d9a72db083a5b8bd03801848d87d02a942 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Fri, 7 Jun 2002 17:06:27 -0500 Subject: [svn-r5555] Purpose: Feature Update Description: It now writes an uncompressed version of the file out. The first tests didn't look all that wonderful. Here is a typical output: Buffer size == 1MB Uncompressed Write Time: 0.55s Uncompressed Write Throughput: 116.00MB/s Compressed Write Time: 8.76s Compressed Write Throughput: 7.31MB/s Platforms tested: Linux --- perform/zip_perf.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/perform/zip_perf.c b/perform/zip_perf.c index 066fce9..2d51b3b 100644 --- a/perform/zip_perf.c +++ b/perform/zip_perf.c @@ -199,6 +199,8 @@ write_file(Bytef *source, uLongf sourceLen) d_len -= rc; d_ptr += rc; } + + free(dest); } /* @@ -375,6 +377,9 @@ do_write_test(unsigned long file_size, unsigned long min_buf_size, Bytef *src; for (src_len = min_buf_size; src_len <= max_buf_size; src_len <<= 1) { + register int i, iters; + + iters = file_size / src_len; src = (Bytef *)calloc(1, sizeof(Bytef) * src_len); if (!src) { @@ -395,14 +400,31 @@ do_write_test(unsigned long file_size, unsigned long min_buf_size, } printf("\n"); + + /* do uncompressed data write */ gettimeofday(&timer_start, NULL); output = open(filename, O_RDWR | O_TRUNC); if (output == -1) error(strerror(errno)); - for (total_len = 0; total_len < file_size; total_len += src_len) { - write_file(src, src_len); + for (i = 0; i <= iters; ++i) { + Bytef *s_ptr = src; + uLong s_len = src_len; + + /* loop to make sure we write everything out that we want to write */ + for (;;) { + int rc = write(output, s_ptr, s_len); + + if (rc == -1) + error(strerror(errno)); + + if (rc == s_len) + break; + + s_len -= rc; + s_ptr += rc; + } } close(output); @@ -413,6 +435,28 @@ do_write_test(unsigned long file_size, unsigned long min_buf_size, ((double)timer_start.tv_sec + ((double)timer_start.tv_usec) / MICROSECOND); + printf("\tUncompressed Write Time: %.2fs\n", total_time); + printf("\tUncompressed Write Throughput: %.2fMB/s\n", + MB_PER_SEC(file_size, total_time)); + + /* do compressed data write */ + output = open(filename, O_RDWR | O_TRUNC); + + if (output == -1) + error(strerror(errno)); + + + for (total_len = 0; total_len < file_size; total_len += src_len) + write_file(src, src_len); + + close(output); + gettimeofday(&timer_stop, NULL); + + total_time = ((double)timer_stop.tv_sec + + ((double)timer_stop.tv_usec) / MICROSECOND) - + ((double)timer_start.tv_sec + + ((double)timer_start.tv_usec) / MICROSECOND); + printf("\tCompressed Write Time: %.2fs\n", total_time); printf("\tCompressed Write Throughput: %.2fMB/s\n", MB_PER_SEC(file_size, total_time)); -- cgit v0.12