nats-io / nats-server

High-Performance server for NATS.io, the cloud and edge native messaging system.
https://nats.io
Apache License 2.0
16k stars 1.41k forks source link

Add `node10` to stree #6106

Closed neilalexander closed 1 week ago

neilalexander commented 1 week ago

Although we probably don't want too many different node sizes here, the node10 case is particularly interesting because it perfectly fits the full 0-9 numeric range without wasting bytes. In fact it saves 96 bytes (208 bytes instead of 304) compared to using node16 for the same purpose.

This means memory savings for tracking subjects which are either mostly numerical throughout, or have tokens that are primarily numerical.

For a subject space that is mostly numerical, this can be several GBs less at the half-billion subjects mark and the saving can grow above that.

Signed-off-by: Neil Twigg neil@nats.io