Unicode(以及其他整数)表打包器
项目描述
packTab
我在2001年首次编写了类似的东西,当时我在FriBidi中需要它。
https://github.com/fribidi/fribidi/blob/master/gen.tab/packtab.c
2019年,我想用它来为HarfBuzz生成更紧凑的Unicode数据表,但为了方便,我想从Python中使用它。虽然我考虑将C代码封装在一个模块中,但我突然想到,我可以以更干净的方式用纯Python重写它。那代码在我的简历上留下了污点(在可读性方面!):D
这个Python版本建立在相同的思想上,但在两个主要方面与C版本不同
-
与C版本使用回溯来寻找最佳分割机会相比,我发现这可以通过动态规划来实现。因此,Python版本实现了DP方法,这要快得多。
-
C版本不尝试将多个项目打包到单个字节中。Python版本这样做。也就是说,如果项目适合,它们可能会打包到1、2或4位每项。
还有其他许多优化,使得(最终,当完成时)Python版本更通用,可用于更广泛的数据表。
待办事项
- 减少Inner/Outer genCode()之间的代码重复。
- 处理空数据数组。
- 如果这样做不会扩大数据类型,将宽度乘数嵌入到数组数据中。这又会节省操作。
- 如果数组的大小不超过64位,则直接将其内联到代码中作为单个整数。
- 目前我们只在最后删除默认值数组。在开始时也这样做,并调整分割代码以找到最佳位移。
- 字节重用!这是一个更大的工作项目。
关闭
packtab-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bdbd16243d540c20d421cca5dd82ec1499b9befe02f1e100b054ab6909549739 |
|
MD5 | 618a59ebdd6f0289c91a0a5c60d9416b |
|
BLAKE2b-256 | f81af607bead29fd61a6e193b64b0917716ea42d02b3cd078ef73f0a3985d199 |
关闭
packtab-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6238e066bbb94f2b6564d337429a4d75c382b8c5b2023ab87943c2f121188bfd |
|
MD5 | 647ccb190f458e74a597831087ed0816 |
|
BLAKE2b-256 | 6046829f657fa052185c56909f6beb9a8eba95514d91ff6d10bfec0bada565f0 |