作者描述了一种针对特定领域压缩器的优化方法,重点在于通过重构最优编码序列的后处理循环来提升性能。 原始循环 `j = next_j[i][j]` 看起来是最优的,但实际上受限于延迟。由于每次迭代都依赖于上一次的结果,CPU 无法并行执行该循环。 为了克服这一限制,作者引入了一种“分支”方法,利用了 CPU 的分支预测功能。通过将赋值操作包裹在 `if (j != next_j[i][j])` 语句中,CPU 会推测性地认为 `j` 保持不变,从而实现吞吐量受限的执行。当条件很少满足时,处理器运行速度会快得多;如果预测失败,它只需回滚状态即可。 为了防止编译器将这个看似多余的条件优化掉,作者使用了 `volatile` 类型转换,强制编译器将该分支视为有意义的代码。基准测试表明,这种技术显著减少了执行时间(从 320µs 缩短至 80µs),证明了通过解锁指令级并行,强制使用分支代码有时可以优于理论上最优的无分支代码。
作者发现英文连体字令人沮丧,原因在于需要“回笔”——即必须抬起笔或中断书写流来给 i 点点、给 t 画横线或补全字母。统计分析显示,英文的回笔频率远高于俄文,这使得书写过程显得笨拙。在数字笔记设备上,这个问题尤为突出,因为多笔画单词会使撤销功能变得复杂。
为了寻求更流畅的书写体验,作者受 SmithHand 和俄文书法的启发,设计了一种无需回笔的定制连体书写体。其主要创新包括:
* **修改字母:** 字母 'x' 写成两个镜像的 'c',字母 't' 则简化为一个类似标志的单笔画。
* **整合圆点:** 不再为了点点而抬笔,而是将 'i' 和 'j' 的笔画末端卷成一个独特的圆圈,从而保持笔尖不离开纸面。
* **侧重流程的设计:** 通过将字母视为连续路径,该书写体消除了对后续笔画的“心理负担”。
经过数月的练习,作者表示,尽管这种书写体偶尔需要调整,但它已成功将英文书写转化为一种流畅、愉悦的过程,体验堪比俄文书写。