-
Notifications
You must be signed in to change notification settings - Fork 71
TextBuffer makes vim word motion painfully slow in large file #308
Description
See t9md/atom-vim-mode-plus#1113.
Basically, it's TextBuffer's fault. TextBuffer.findAllInRangeSync is going super slow at the beginning of the file.
Considering this and issues with find in replace in large files being really slow, it's obvious that TextBuffer needs some serious improvement.
Edit by @rsese to copy the detailed issue description from t9md/atom-vim-mode-plus#1113
Execute
Vim Mode Plus: Clip Debug Info(which write info to clipboard) then paste here.debug info
Read and check all "Checklist" below.Checklist
You have to check all before open issue.
- Provide your environment info clipped by
Vim Mode Plus: Clip Debug Infocommand.- Try with latest Atom and latest vim-mode-plus.
- Pick a descriptive and non-ambiguous subject
- Express "what" you want(feature? config option?, behavior change?) in short sentence(not long!).
- Contrast current behavior if you want to change current behavior, with sample text, operation(keystroke) and result.
- Include real use case so that maintainer can understand "why" you need help.
- Include Atom(
atom --version), vim-mode-plus version, and OS version(e.g. macOS Sierra 10.12.3).- If keybinding issue, Read this.
Here is an imitation of the data file I'm working with (60k lines):
sample-cave-data.txtMoving forward by a word (
wcommand) at the beginning of the file takes approx 240 ms per jump. Near the end of the file it only takes 1 ms per jump (see profiler output below).240 ms is painfully slow. I'd like
wto take 1 ms everywhere within a file of any size.Slowness comes from
TextBuffer.findAllInRangeSync. (TextBufferalso makes search and replace performance utterly pathetic in large files, so I don't blamevim-mode-plusfor this really, thanks for all of your hard work!)Versions
OS: macOS Mojave 10.14.2
Atom : 1.34.0
Electron: 2.0.16
Chrome : 61.0.3163.100
Node : 8.9.3
vim-mode-plus: 1.36.0Saved profiler output
vim-mode-plus-slow-word-motion.zip
Profiler screenshot -- start of file
Profiler screenshot -- end of file

