4 ms·
Well you could easily use the first 4 bits to indicate how many bytes the length is + 1. c0 (0b0000) -> length is 0xc = 12 1341 (0b0001) -> length is
by jbverschoor 4y ago
Well you could easily use the first 4 bits to indicate how many bytes the length is + 1.
c0 (0b0000) -> length is 0xc = 12
1341 (0b0001) -> length is 0x134 = 69,940
239a42 (0b0010) -> length is 0x239a42 = 145,828
deadbeaf239a47 (0b0111) -> length is 0xdeadbeaf239a4 = 3917404957718948.
This gets you a 7-byte = 56bit number, minimal overhead for smaller strings.
Maybe reserve 0x1111 for future use.
Maybe the other endian makes more sense here, and maybe 0 should mean zero-length.
It's probably not very performant compared to other solutions, but you can just shift 4 bits, and you're done
I'm curious how many strings are allocated at a particular point in time (across everything, kernel, os, apps, etc)
- jstimpfle 4y agoThese considerations can make sense when thinking about storage formats (probably you want to compress the string too), but they are not convenient for in-memory representation where you want to get the location of the first character with a simple member access.
- jbverschoor 4y agoIt starts at the start of the frame + the first nibble + 1
- deleted 4y ago[deleted]