diff options
| author | Jeff Epler <jepler@gmail.com> | 2019-12-02 14:49:23 -0600 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2019-12-02 14:49:23 -0600 |
| commit | 1a0dcb5caaaa2d9f0dc25d87735b76f1bf5f2c24 (patch) | |
| tree | 4d0c42fe527e383d4bfafd599b951820ac75981d /py | |
| parent | 879e1041c9bb0067bc06337870f2515922469cf0 (diff) | |
makeqstrdata: reclaim some more bytes on some translations
If a translation only has unicode code points 255 and below, the "values"
array can be 8 bits instead of 16 bits. This reclaims some code size,
e.g., in a local build, trinket_m0 / en_US reclaimed 112 bytes and de_DE
reclaimed 104 bytes. However, languages like zh_Latn_pinyin, which use
code points above 255, did not benefit.
Diffstat (limited to 'py')
| -rw-r--r-- | py/makeqstrdata.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/py/makeqstrdata.py b/py/makeqstrdata.py index 9df1a82b6..0d667959d 100644 --- a/py/makeqstrdata.py +++ b/py/makeqstrdata.py @@ -131,9 +131,10 @@ def compute_huffman_coding(translations, qstrs, compression_filename): print("// values", values, "lengths", len(lengths), lengths) print("// estimated total memory size", len(lengths) + 2*len(values) + sum(len(cb[u]) for u in all_strings_concat)) print("//", values, lengths) + values_type = "uint16_t" if max(ord(u) for u in values) > 255 else "uint8_t" with open(compression_filename, "w") as f: f.write("const uint8_t lengths[] = {{ {} }};\n".format(", ".join(map(str, lengths)))) - f.write("const uint16_t values[] = {{ {} }};\n".format(", ".join(str(ord(u)) for u in values))) + f.write("const {} values[] = {{ {} }};\n".format(values_type, ", ".join(str(ord(u)) for u in values))) return values, lengths def decompress(encoding_table, length, encoded): |
