绳索优化,第 1 部分 - Zed 博客

主要观点:作者几周前看到 Antonio 的 PR“Speed up point translation in the Rope”,其描述与标题相符,方法使point_to_offset快了 70%,吞吐量增加 250%。代码中包含优化的位操作函数,通过构建Chunk的索引来加速点转换,减少循环和分支,提高速度。之后 Antonio 和作者又添加了对制表符的索引,目前仅添加了索引,未在高层代码中使用,将在后续 Zed Decoded 中进行。
关键信息

  • Antonio 的 PR 标题吸引人,描述与标题相符,方法能大幅提高速度。
  • 优化的代码中通过u128构建Chunk的索引,减少循环和分支。
  • 以新行和制表符为例说明索引的作用及效果。
  • 目前仅添加了制表符索引,未在高层代码中使用。
    重要细节
  • offset_to_point方法用于将字符串中的偏移量转换为行和列的Point
  • Rope结构及offset_to_pointChunk中的实现方式。
  • u8举例说明索引新行的过程及原理。
  • 位操作函数count_onesleading_zeros无需循环,能提高速度。
  • 性能分析显示添加制表符索引可能会使 Zed 更快。
阅读 12
0 条评论