@@ -50,17 +50,14 @@ size_t measure_zstd(const std::vector<unsigned char>& data)
50
50
struct Stats
51
51
{
52
52
bool testz;
53
- double v10_raw;
54
- double v10_lz4;
55
- double v10_zstd;
56
53
double count;
54
+ double size;
57
55
58
56
double ratio_v0;
59
57
double ratio_v1;
60
58
double ratio_v1_lz4;
61
59
double ratio_v1_zstd;
62
60
63
- double total_src;
64
61
double total_v0;
65
62
double total_v1;
66
63
double total_v1_lz4;
@@ -97,16 +94,14 @@ void testFile(FILE* file, size_t count, size_t stride, int level, Stats* stats =
97
94
output.resize (meshopt_encodeVertexBufferLevel (output.data (), output.size (), decoded.data (), count, stride, level));
98
95
99
96
printf (" raw %zu KB\t " , decoded.size () / 1024 );
100
- printf (" v0 %.2f" , double (input.size ()) / double (decoded.size ()));
101
- printf (" v1 %.2f" , double (output.size ()) / double (decoded.size ()));
102
- printf (" v1/v0 %+.1f%%" , double (output.size ()) / double (input.size ()) * 100 - 100 );
97
+ printf (" v0 %.3f" , double (input.size ()) / double (decoded.size ()));
98
+ printf (" v1 %.3f" , double (output.size ()) / double (decoded.size ()));
103
99
104
100
if (stats)
105
101
{
106
- stats->v10_raw += double (output.size ()) / double (input.size ()) - 1 ;
107
102
stats->count ++;
103
+ stats->size += double (decoded.size ());
108
104
109
- stats->total_src += double (decoded.size ());
110
105
stats->total_v0 += double (input.size ());
111
106
stats->total_v1 += double (output.size ());
112
107
@@ -117,10 +112,8 @@ void testFile(FILE* file, size_t count, size_t stride, int level, Stats* stats =
117
112
if (stats && stats->testz )
118
113
{
119
114
size_t decoded_lz4 = measure_lz4 (decoded);
120
- size_t input_lz4 = measure_lz4 (input);
121
115
size_t output_lz4 = measure_lz4 (output);
122
116
size_t decoded_zstd = measure_zstd (decoded);
123
- size_t input_zstd = measure_zstd (input);
124
117
size_t output_zstd = measure_zstd (output);
125
118
126
119
stats->total_v1_lz4 += output_lz4;
@@ -129,18 +122,11 @@ void testFile(FILE* file, size_t count, size_t stride, int level, Stats* stats =
129
122
stats->ratio_v1_lz4 += log (double (output_lz4) / double (decoded.size ()));
130
123
stats->ratio_v1_zstd += log (double (output_zstd) / double (decoded.size ()));
131
124
132
- printf (" \t lz4 %.2f:" , double (decoded_lz4) / double (decoded.size ()));
133
- printf (" v0 %.2f" , double (input_lz4) / double (decoded.size ()));
134
- printf (" v1 %.2f" , double (output_lz4) / double (decoded.size ()));
135
- printf (" v1/v0 %+.1f%%" , double (output_lz4) / double (input_lz4) * 100 - 100 );
125
+ printf (" \t lz4 %.3f" , double (decoded_lz4) / double (decoded.size ()));
126
+ printf (" v1+lz4 %.3f" , double (output_lz4) / double (decoded.size ()));
136
127
137
- printf (" \t zstd %.2f:" , double (decoded_zstd) / double (decoded.size ()));
138
- printf (" v0 %.2f" , double (input_zstd) / double (decoded.size ()));
139
- printf (" v1 %.2f" , double (output_zstd) / double (decoded.size ()));
140
- printf (" v1/v0 %+.1f%%" , double (output_zstd) / double (input_zstd) * 100 - 100 );
141
-
142
- stats->v10_lz4 += double (output_lz4) / double (input_lz4) - 1 ;
143
- stats->v10_zstd += double (output_zstd) / double (input_zstd) - 1 ;
128
+ printf (" \t zstd %.3f" , double (decoded_zstd) / double (decoded.size ()));
129
+ printf (" v1+zstd %.3f" , double (output_zstd) / double (decoded.size ()));
144
130
}
145
131
}
146
132
@@ -191,15 +177,24 @@ int main(int argc, char** argv)
191
177
level = atoi (argv[2 ] + 1 );
192
178
for (int i = level < 0 ? 2 : 3 ; i < argc; ++i)
193
179
testFile (argv[i], level < 0 ? 2 : level, &stats);
180
+
194
181
printf (" ---\n " );
195
- printf (" %d files: raw v1/v0 %+.2f%%, lz4 v1/v0 %+.2f%%, zstd v1/v0 %+.2f%%\n " ,
196
- int (stats.count ), stats.v10_raw / stats.count * 100 , stats.v10_lz4 / stats.count * 100 , stats.v10_zstd / stats.count * 100 );
197
- printf (" ratio: v0 %.2f, v1 %.2f, v1+lz4 %.2f, v1+zstd %.2f\n " ,
198
- exp (stats.ratio_v0 / stats.count ), exp (stats.ratio_v1 / stats.count ),
199
- exp (stats.ratio_v1_lz4 / stats.count ), exp (stats.ratio_v1_zstd / stats.count ));
200
- printf (" total: input %.2f MB, v0 %.2f MB, v1 %.2f MB, v1+lz4 %.2f MB, v1+zstd %.2f MB\n " ,
201
- stats.total_src / 1024 / 1024 , stats.total_v0 / 1024 / 1024 , stats.total_v1 / 1024 / 1024 ,
202
- stats.total_v1_lz4 / 1024 / 1024 , stats.total_v1_zstd / 1024 / 1024 );
182
+ printf (" %d files: v0 %.3f, v1 %.3f" ,
183
+ int (stats.count ),
184
+ exp (stats.ratio_v0 / stats.count ), exp (stats.ratio_v1 / stats.count ));
185
+ if (stats.testz )
186
+ printf (" , v1+lz4 %.3f, v1+zstd %.3f\n " , exp (stats.ratio_v1_lz4 / stats.count ), exp (stats.ratio_v1_zstd / stats.count ));
187
+ else
188
+ printf (" \n " );
189
+
190
+ printf (" total: %d files, raw %.2f MB, v0 %.2f MB, v1 %.2f MB" ,
191
+ int (stats.count ),
192
+ stats.size / 1024 / 1024 , stats.total_v0 / 1024 / 1024 , stats.total_v1 / 1024 / 1024 );
193
+ if (stats.testz )
194
+ printf (" , v1+lz4 %.2f MB, v1+zstd %.2f MB\n " , stats.total_v1_lz4 / 1024 / 1024 , stats.total_v1_zstd / 1024 / 1024 );
195
+ else
196
+ printf (" \n " );
197
+
203
198
return 0 ;
204
199
}
205
200
0 commit comments