{ /* In this loop we compute the entropy of the histogram and simultaneously buildasimplifiedhistogramofthecodelengthcodeswhereweusethe
zero repeat code 17, but we don't use the non-zero repeat code 16. */
size_t max_depth = 1;
uint32_t depth_histo[BROTLI_CODE_LENGTH_CODES] = { 0 }; constdouble log2total = FastLog2(histogram->total_count_); for (i = 0; i < data_size;) { if (histogram->data_[i] > 0) { /* Compute -log2(P(symbol)) = -log2(count(symbol)/total_count) =
= log2(total_count) - log2(count(symbol)) */ double log2p = log2total - FastLog2(histogram->data_[i]); /* Approximate the bit depth by round(-log2(P(symbol))) */
size_t depth = (size_t)(log2p + 0.5);
bits += histogram->data_[i] * log2p; if (depth > 15) {
depth = 15;
} if (depth > max_depth) {
max_depth = depth;
}
++depth_histo[depth];
++i;
} else { /* Compute the run length of zeros and add the appropriate number of 0
and 17 code length codes to the code length code histogram. */
uint32_t reps = 1;
size_t k; for (k = i + 1; k < data_size && histogram->data_[k] == 0; ++k) {
++reps;
}
i += reps; if (i == data_size) { /* Don't add any cost for the last zero run, since these are encoded
only implicitly. */ break;
} if (reps < 3) {
depth_histo[0] += reps;
} else {
reps -= 2; while (reps > 0) {
++depth_histo[BROTLI_REPEAT_ZERO_CODE_LENGTH]; /* Add the 3 extra bits for the 17 code length code. */
bits += 3;
reps >>= 3;
}
}
}
} /* Add the estimated encoding cost of the code length code histogram. */
bits += (double)(18 + 2 * max_depth); /* Add the entropy of the code length code histogram. */
bits += BrotliBitsEntropy(depth_histo, BROTLI_CODE_LENGTH_CODES);
} return bits;
}
#undef HistogramType
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.