From 0de9685e0fa681be50a28978292319594d97d5c1 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 17 Jul 2024 18:58:09 +0300 Subject: [PATCH] =?utf8?q?=D0=9D=D0=B5=D0=BC=D0=B5=D1=86=D0=BA=D0=B8=D0=B5?= =?utf8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://cedardb.com/blog/german_strings/ Некоторые DB-related решения используют "German-style" строки. В противовес Си-шным (которые типа аналогичны Go-шным slice-ам), в которых 64-бит идёт на длину, 64-бит на ёмкость, 64-бит указатель на содержимое. Но во многих задачах строки не часто меняются, как правило они immutable. Частенько они довольно короткие (считанные байты). Нередко нужно прочитать только их начало (префикс): сравнение строк, лексикографическая сортировка, и т.д.. Предлагают такой вариант: 128-бит структура, в которой 32-бита отводят под хранение длины, а в оставшемся месте или вся строка целиком (если она не длиннее 12 байт). В противном случае, идёт 32-бит префикс строки, а дальше указатель на содержимое. -- 2.50.0