Какая структура данных используется в коде Visual Studio

Я знаю, что Notepad++ использовал Gap Buffer, а редактор XI использовал Rope. Но я не знаю, какая структура данных стоит за кодом Visual Studio.

Знаете ли вы, какая структура данных используется в коде Visual Studio?

2 ответа

~$ ls ~/.vscode/extensions/donjayamanne.python-0.7.0/pythonFiles/ completion.py isort PythonTools release sortImports.py completionServer.py preview refactor.py rope ~$ Выглядит как веревка для меня.

Судя по статье на сайте Visual Studio о том, как был реализован текстовый буфер для Visual Studio Code 1.21, текстовый буфер, по-видимому, представлен таблицей кусков — структурой данных, хранящей исходный текст в одном узле, а затем последующие правки в другие узлы.

Затем они улучшили его производительность за счет:

  • кэширование начала строк, чтобы было легче прыгать по текстовому буферу
  • убедиться, что исходный текст не стал слишком большим для обработки их движком Javascript (V8), путем сохранения исходного текста в виде списка буферов.
  • переработка этого кеша начала строк для использования красно-черного дерева для еще большей производительности

чтобы получить то, что автор называет «Таблица фрагментов с несколькими буферами с красно-черным деревом, оптимизированным для линейной модели», а затем сразу же сокращается до «дерева фрагментов».

Другие вопросы по тегам