prometheus/model/labels
Bryan Boreham b2c2146d7c
Labels: simpler/faster stringlabels encoding (#16069)
Instead of using varint to encode the size of each label, use a single
byte for size 0-254, or a flag value of 255 followed by the size in
3 bytes little-endian.

This reduces the amount of code, and also the number of branches in
commonly-executed code, so it runs faster.

The maximum allowed label name or value length is now 2^24 or 16MB.

Memory used by labels changes as follows:
* Labels from 0 to 127 bytes length: same
* From 128 to 254: 1 byte less
* From 255 to 16383: 2 bytes more
* From 16384 to 2MB: 1 byte more
* From 2MB to 16MB: same

Labels: panic on string too long.

Slightly more user-friendly than encoding bad data and finding out when
we decode.

Clarify that Labels.Bytes() encoding can change

---------

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2025-04-30 10:53:48 +01:00
..
labels.go Labels: simpler/faster stringlabels encoding (#16069) 2025-04-30 10:53:48 +01:00
labels_common.go utf8: Remove support for legacy global validation setting 2025-03-13 10:47:24 -04:00
labels_dedupelabels.go Labels: simpler/faster stringlabels encoding (#16069) 2025-04-30 10:53:48 +01:00
labels_dedupelabels_test.go [PERF] Labels: faster varint for dedupelabels 2024-06-21 11:57:09 +01:00
labels_stringlabels.go Labels: simpler/faster stringlabels encoding (#16069) 2025-04-30 10:53:48 +01:00
labels_test.go Labels: simpler/faster stringlabels encoding (#16069) 2025-04-30 10:53:48 +01:00
matcher.go Fix Matcher.String() with empty label name 2024-06-13 18:46:35 +02:00
matcher_test.go Quote label name in matchers when needed 2024-05-08 16:58:51 +02:00
regexp.go chore: enable unused-parameter from revive 2025-02-19 19:50:28 +01:00
regexp_test.go chore: enable unused-parameter from revive 2025-02-19 19:50:28 +01:00
sharding.go Labels: use single byte as separator - small speedup 2024-07-15 09:47:16 +01:00
sharding_dedupelabels.go Labels: use single byte as separator - small speedup 2024-07-15 09:47:16 +01:00
sharding_stringlabels.go Labels: use single byte as separator - small speedup 2024-07-15 09:47:16 +01:00
sharding_test.go Add ShardedPostings() support to TSDB (#10421) 2024-01-29 11:57:27 +00:00
test_utils.go Labels: Call NewScratchBuilder in test_utils 2024-02-23 13:50:27 +00:00