diff options
Diffstat (limited to 'howbig.c')
-rw-r--r-- | howbig.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/howbig.c b/howbig.c new file mode 100644 index 0000000..9f2ad7c --- /dev/null +++ b/howbig.c | |||
@@ -0,0 +1,37 @@ | |||
1 | |||
2 | #include <stdio.h> | ||
3 | #include <assert.h> | ||
4 | #include "bzlib.h" | ||
5 | |||
6 | unsigned char ibuff[1000000]; | ||
7 | unsigned char obuff[1000000]; | ||
8 | |||
9 | void doone ( int n ) | ||
10 | { | ||
11 | int i, j, k, q, nobuff; | ||
12 | q = 0; | ||
13 | |||
14 | for (k = 0; k < 1; k++) { | ||
15 | for (i = 0; i < n; i++) | ||
16 | ibuff[i] = ((unsigned long)(random())) & 0xff; | ||
17 | nobuff = 1000000; | ||
18 | j = bzBuffToBuffCompress ( obuff, &nobuff, ibuff, n, 9,0,0 ); | ||
19 | assert (j == BZ_OK); | ||
20 | if (nobuff > q) q = nobuff; | ||
21 | } | ||
22 | printf ( "%d %d(%d)\n", n, q, (int)((float)n * 1.01 - (float)q) ); | ||
23 | } | ||
24 | |||
25 | int main ( int argc, char** argv ) | ||
26 | { | ||
27 | int i; | ||
28 | i = 0; | ||
29 | while (1) { | ||
30 | if (i >= 900000) break; | ||
31 | doone(i); | ||
32 | if ( (int)(1.10 * i) > i ) | ||
33 | i = (int)(1.10 * i); else i++; | ||
34 | } | ||
35 | |||
36 | return 0; | ||
37 | } \ No newline at end of file | ||