Example: 2×3 matrix of 32-bit floats (24 bytes data + 8 header = 32 bytes total).

HKEY_LOCAL_MACHINE\SOFTWARE\CompanyName\Product\Matrices ├── TransformMatrix │ Type = REG_SZ "binary" │ Data = REG_BINARY ... ├── LookupTable_3x4 │ Type = REG_SZ "json" │ Data = REG_SZ "..." └── UserPrefMatrix rows = REG_DWORD 5 cols = REG_DWORD 5 data_0_0 = REG_DWORD 1 ... | Method | Read Speed | Write Speed | Memory Overhead | Max Practical Size | |--------|------------|-------------|-----------------|--------------------| | Binary | Very fast | Fast | Low | ~1 MB (registry limit) | | JSON | Medium | Medium | Medium | 64 KB (REG_SZ limit) | | Row-per-key | Slow (many lookups) | Slow | High | Hundreds of keys |

For most matrix applications, (compact, fast) or REG_SZ with JSON (human-readable, flexible) is preferred. 3. Encoding Matrices in the Registry 3.1 Binary Encoding (Fixed-Size Numeric Matrix) Store matrix dimensions (rows, cols) and element values in a single REG_BINARY value.

RegSetValueExW(hKey, valueName, 0, REG_BINARY, buffer.data(), (DWORD)totalSize); RegCloseKey(hKey); Logical naming prevents collision and improves readability.