Visual Studio Code中使用哪种数据结构

时间:2017-10-17 07:56:08

标签: rope

我知道Notepad ++使用了Gap Buffer,而XI编辑器使用了Rope。 但我不知道Visual Studio Code背后的数据结构。

您知道Visual Studio Code中使用了哪种数据结构吗?

2 个答案:

答案 0 :(得分:2)

~$ ls ~/.vscode/extensions/donjayamanne.python-0.7.0/pythonFiles/ completion.py isort PythonTools release sortImports.py completionServer.py preview refactor.py rope ~$ 看起来像绳子给我。

答案 1 :(得分:1)

基于 an article on the Visual Studio website about how the text buffer was implemented for Visual Studio Code 1.21,文本缓冲区显然由 piece table 表示 - 一种数据结构,将初始文本存储在一个节点中,然后在其他节点中进行后续编辑。

然后他们通过以下方式提高了性能:

  • 缓存行的开头,以便更容易地在文本缓冲区中跳转
  • 通过将初始文本存储为缓冲区列表,确保初始文本不会变得太大,以至于他们的 Javascript 引擎 (V8) 无法处理
  • 重新设计行首缓存以使用红黑树以获得更好的性能

得到作者所说的“带红黑树的多缓冲片表,针对线模型进行了优化”,然后立即缩短为“片树”。