mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Use "static-only" zstd functions to estimate memory usage.
These should provide better and more accurate results when we can use them; we fall back to the old approach when we can't.
This commit is contained in:
parent
7cb954209d
commit
f98cb5d355
@ -139,9 +139,11 @@ struct tor_zstd_compress_state_t {
|
||||
|
||||
#ifdef HAVE_ZSTD
|
||||
/** Return an approximate number of bytes stored in memory to hold the
|
||||
* Zstandard compression/decompression state. */
|
||||
* Zstandard compression/decompression state. This is a fake estimate
|
||||
* based on inspecting the zstd source: tor_zstd_state_size_precalc() is
|
||||
* more accurate when it's allowed to use "static-only" functions */
|
||||
static size_t
|
||||
tor_zstd_state_size_precalc(int compress, int preset)
|
||||
tor_zstd_state_size_precalc_fake(int compress, int preset)
|
||||
{
|
||||
tor_assert(preset > 0);
|
||||
|
||||
@ -198,6 +200,24 @@ tor_zstd_state_size_precalc(int compress, int preset)
|
||||
|
||||
return memory_usage;
|
||||
}
|
||||
|
||||
/** Return an approximate number of bytes stored in memory to hold the
|
||||
* Zstandard compression/decompression state. */
|
||||
static size_t
|
||||
tor_zstd_state_size_precalc(int compress, int preset)
|
||||
{
|
||||
#ifdef ZSTD_STATIC_LINKING_ONLY
|
||||
if (tor_zstd_can_use_static_apis()) {
|
||||
if (compress) {
|
||||
return ZSTD_estimateCStreamSize(preset);
|
||||
} else {
|
||||
/* Could use DStream, but that takes a windowSize. */
|
||||
return ZSTD_estimateDCtxSize();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return tor_zstd_state_size_precalc_fake(compress, preset);
|
||||
}
|
||||
#endif /* defined(HAVE_ZSTD) */
|
||||
|
||||
/** Construct and return a tor_zstd_compress_state_t object using
|
||||
|
Loading…
Reference in New Issue
Block a user