Incredibly slow on write
- Ngôn ngữ chính
- Vim Script
- Star
- 1.1k
- Fork
- 102
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
**Describe the bug**
Recently upgraded vim, and I noticed that vim basically froze every time I wrote a file. I opened a typescript file with about 200loc and profiled using this set of commands: https://stackoverflow.com/a/12216578/3269537
To profile I just opened the file and saved it, then closed the file.
Output:
```
FUNCTIONS SORTED ON TOTAL TIME count total (s) self (s) function
9 5.210759 0.000624 maktaba#function#Call()
2 2.642967 0.000312 codefmt#FormatBuffer()
3 2.611224 0.000173 maktaba#syscall#Call()
3 2.610018 0.000436 80_DoSyscallCommon()
3 2.605518 0.000057 maktaba#function#Apply()
3 2.603859 0.001205 maktaba#syscall#DoCall()
2 2.402088 0.001135 42()
1 1.472221 0.000255 33_FormatBufferAndSetRepeat()
1 1.171017 0.000016 32_FmtIfAutoEnabled()
2 0.240567 0.000527 38_GetFormatter()
2 0.239915 0.000078 38_IsAvailable()
2 0.239817 0.000679 40()
2 0.020809 0.001005 maktaba#buffer#Overwrite()
2 0.019677 0.019450 maktaba#python#ImportModule()
7 0.004788 0.000730 maktaba#syscall#GetCommand()
24 0.003627 0.001727 maktaba#string#Strip()
5 0.002999 0.000466 codefmt#formatterhelpers#ResolveFlagT
oArray()
2 0.002801 0.000086 maktaba#syscall#WithCwd()
2 0.002715 0.000076 maktaba#syscall#And()
116 0.002186 0.001214 maktaba#ensure#IsString()
```
notice that maktaba takes ~5s and codefmt takes ~2.5
**To Reproduce**
Minimal vimrc:
```
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'google/vim-maktaba'
Plugin 'google/vim-codefmt'
Plugin 'google/vim-glaive'
call vundle#end()
call glaive#Install()
" Set up useful defaults for codefmt.
augroup autoformat_settings
autocmd FileType bzl AutoFormatBuffer buildifier
autocmd FileType c,cpp,proto,arduino AutoFormatBuffer clang-format
autocmd FileType dart AutoFormatBuffer dartfmt
autocmd FileType go AutoFormatBuffer gofmt
autocmd FileType gn AutoFormatBuffer gn
autocmd FileType html,css,sass,scss,less,json,vue,javascript,javascriptreact,typescript,typescriptreact AutoFormatBuffer prettier
autocmd FileType java AutoFormatBuffer google-java-format
autocmd FileType python AutoFormatBuffer yapf
autocmd FileType rust AutoFormatBuffer rustfmt
augroup END
Glaive codefmt plugin[mappings]
autocmd BufWritePre * FormatCode
```
**Expected behavior**
Previously this was not nearly this slow. I was expecting a non-noticeable latency on save.
**OS (version)**
Ubuntu 20.04.3 LTS
**Additional context**
vim version: VIM - Vi IMproved 9.0 (2022 Jun 28, compiled May 10 2022 08:40:37)
Hướng dẫn đóng góp
Hướng nghiên cứu
Tái hiện độ trễ bằng vimrc tối thiểu và quy trình profiling khi lưu/đóng được mô tả trong issue. Bắt đầu bằng cách lần theo FormatCode, codefmt#FormatBuffer() và maktaba#syscall#Call(); công việc được xem là hoàn tất khi việc lưu tệp TypeScript 200 dòng không còn gây ra độ trễ vài giây đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- vim
- Lĩnh vực
- performance, tooling
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100