算法 – 为什么编辑很长的行时文本编辑器会变慢?

前端之家收集整理的这篇文章主要介绍了算法 – 为什么编辑很长的行时文本编辑器会变慢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
线条很长时,大多数文本编辑器都很慢.建议的文本编辑器数据存储结构似乎是绳索,它应该不受长线修改的影响.顺便说一下,编辑器在简单的长线导航时甚至会很慢.

示例:
单个字符(如0在PSPad中重复100000次或在Vim中在单行上重复1000000次)会减慢光标在行尾时的移动速度.如果文件中有多少字节但是在多行上调度,则光标根本不会减慢,所以我认为这不是内存问题.

这个问题的起源是如此常见?

我主要使用Windows,所以这可能与Windows字体处理有关吗?

解决方法

您可能正在使用像utf8这样的可变长度编码.编辑器希望跟踪每个光标移动所在的列,并且使用可变长度编码,没有快捷方式来扫描每个字节以查看有多少字符;这是一个很长的扫描线.

我怀疑使用像iso8859-1(latin1)这样的单字节编码,你不会看到长线的这种减速.如果使用单字节编码,则字符长度=字节长度,并且可以使用简单的指针算法快速计算列.像ucs-2这样的固定长度多字节编码应该能够使用相同的快捷方式(只需除以常量字符大小),但编辑可能不够聪明,无法利用它.

猜你在找的HTML相关文章