Mengapa Vim dapat membuka file besar lebih cepat daripada beberapa editor teks lainnya?

10

Saat membuka file log besar (well, tidak bahwa besar, tetapi 80MB masih banyak teks!), saya selalu menggunakan Vim karena memuatnya hampir secara instan. Editor teks lain seperti Notepad, Notepad ++, dll akan mengambil & gt; 10 detik untuk memproses dan memuat file. Apa alasannya? Apa yang membuat Vim begitu cepat?

Anonymous
sumber
8
Aktifkan penyorotan sintaks dan kaget betapa lambatnya vim
Marco
11
Untuk pemilih dekat: Saya berpendapat bahwa pertanyaan ini aku s konstruktif - seperti yang ditunjukkan jawabannya, ada teknik yang digunakan Vim yang membuatnya lebih efisien dengan file yang lebih besar daripada beberapa editor lainnya. Itu jawaban konkret, yang bisa didukung oleh fakta / referensi. Dan saya tidak yakin mengapa orang dapat menganggap ini terlokalisir; ada perbedaan yang jelas dalam bagaimana editor menangani file yang mempengaruhi lebih banyak daripada area geografis yang kecil, momen tertentu dalam waktu, atau situasi yang sangat sempit .
Bob
1
@ Bob - Saya gagal melihat bagaimana jawaban untuk pertanyaan ini menyelesaikan masalah.
Nifle

Jawaban:

16

Ada banyak trik yang dapat digunakan editor untuk mengoptimalkan berurusan dengan file besar.

Pertama adalah hanya bekerja dengan apa yang mereka butuhkan. Itu berarti tidak mencoba mem-parsing seluruh file untuk hal-hal seperti penghitungan baris, pengukuran lebar, pembungkusan kata, penyorotan sintaksis, validasi XML, rendering HTML, Undo, dll. Ada Plugin LargeFile tersedia untuk Vim yang akan menonaktifkan sejumlah fitur Vim ketika file "besar" (sebagaimana didefinisikan oleh pengguna) dibuka. Itu Memuat file besar lebih cepat halaman pada wiki Vim menyebutkan beberapa fitur yang dinonaktifkan: abaikan filetype (untuk penyorotan / penguraian sintaksis), nonaktifkan undo, alihkan ke mode read-only. Ada perubahan lain juga, tetapi mereka tampaknya ditargetkan pada konservasi memori daripada kecepatan.

Lainnya adalah pemetaan memori. Alih-alih membaca seluruh file ke dalam memori, kirim OS yang mendasarinya untuk memetakan tampilan file langsung ke ruang memori proses. Saya tidak yakin apakah Vim secara khusus melakukan ini, tetapi editor lain dapat dan melakukannya.

Itu mungkin 2 terbesar, tapi tentu saja ada lebih banyak.

afrazier
sumber
Apakah Anda memiliki referensi untuk vim menggunakan salah satu dari teknik ini?
slhck
Saya tidak bisa mengomentari pemetaan memori pada khususnya, tetapi yang pertama pasti bisa dilakukan. Edit yang akan datang.
afrazier