Độ trễ chuyển động của điểm Emacs (con trỏ)


12

Khi chạy previous-line, C-phoặc <up>con trỏ nhảy lên một dòng mà không có bất kỳ vấn đề hoặc độ trễ. Khi chạy next-line, C-nhoặc <down>con trỏ nhảy đúng xuống một dòng, nhưng có độ trễ đáng kể. Khi tôi giữ phím xuống, tôi thậm chí không thể nhìn thấy điểm đang di chuyển, nó chỉ xuất hiện ở đâu đó bên dưới. Tôi đã chạy trình hồ sơ Emacs và có vẻ như thủ phạm là cl-position. Những gì nó hoạt động được là theo previous-linenghĩa đen chỉ di chuyển con trỏ, trong khi next-linechạy rất nhiều chức năng.

Hồ sơ đầu ra

Vấn đề là gì và làm thế nào để khắc phục nó?


Bạn đang sử dụng visual-line-mode? Bạn có một số dòng rất dài?
vẽ

Tôi không sử dụng visual-line-modevà tôi không có bất kỳ hàng dài.
Damian Chrzanowski

Câu trả lời:


22

Tôi đã tìm thấy một câu trả lời cho câu hỏi của mình thông qua việc thu hẹp một chút nghịch ngợm và googling. Tôi đã quản lý để giảm độ trễ 10 LẦN !!!! Ý tôi là .... thật điên rồ khi next-linesử dụng bao nhiêu sức mạnh tính toán để di chuyển con trỏ xuống?!?!

Cách khắc phục:

Đặt mã này vào init.el của bạn: (setq auto-window-vscroll nil)

Bằng chứng:

Lag giảm đáng kể

Bây giờ next-linekhông kích hoạt line-move-partialdo đó làm giảm độ trễ. Tôi không nhớ thiết lập auto-window-vscrollđể t. Nó không ở bất cứ đâu trong bất kỳ .eltập tin nào của tôi , tôi không chắc nó đã được thiết lập tđể bắt đầu như thế nào . Vì vậy, nếu bất cứ ai có vấn đề về hiệu suất với chuyển động con trỏ, thì cách khắc phục ở trên sẽ giảm độ trễ từ khoảng 50% -80% thời gian cpu xuống còn 5% thời gian cpu !!!

Để nhanh chóng kiểm tra nếu bạn bị ảnh hưởng chỉ cần chạy C-h v auto-window-vscroll. Nếu nó được đặt thành tbạn có thể gặp vấn đề lớn về hiệu suất. Xác minh với trình lược tả Emacs nếu chuyển động con trỏ thực sự gây ra độ trễ.

Chúc may mắn cho những người yêu thích Emacs !!!

Nguồn sửa chữa


Vui lòng xem xét việc gửi một lỗi Emacs (hoặc yêu cầu nâng cao) cho việc này : M-x report-emacs-bug.
vẽ

2
Sẽ làm, vì tôi có thể thấy đây là một vấn đề cho rất nhiều người.
Damian Chrzanowski

1
Cảm ơn, Damian, nó cải thiện hiệu suất nhưng tôi vẫn cảm thấy hơi không phản hồi
Neeraj Verma

3

Tôi không hoàn toàn chắc chắn vấn đề là gì, nhưng báo cáo trình hồ sơ của bạn dường như chỉ ra rằng điểm chính xác thực hiện nhiều lần hiển thị hơn dự kiến, do đó gây ra sự tính toán lại của dòng chế độ và đường dây điện đó sẽ phải nỗ lực hơn để ghi nhớ tính toán của nó cho modeline.

IOW, tôi đề nghị bạn M-x report-emacs-bugvà bạn cũng có thể báo cáo lỗi cho những người bảo trì đường dây điện.


0

Có vẻ như bạn đang sử dụng powerline. Cụ thể, bạn đang hiển thị tên dự án phóng trong mô hình của bạn. Gần đây đã có một số cải tiến cho gói đạn đã giảm nhẹ một số điều đó. Hãy chắc chắn rằng bạn đang cập nhật.

https://github.com/bbatsov/projectile/issues/1212

https://github.com/bbatsov/projectile/pull/1213

Cũng có thể ghi nhớ các hàm mà modeline gọi. Tôi đã làm điều này rất nhiều trên modeline của tôi để làm cho nó rất nhanh.


Vấn đề đã được giải quyết, dòng Projectile hoặc Power không phải là vấn đề
Damian Chrzanowski

Tôi rất vui vì bạn đã sắp xếp nó. Hồ sơ của bạn đã chỉ ra sự chậm lại đến từ đạn. Có thể việc cài đặt auto-window-vscroll thành nil chỉ khiến emacs bỏ qua các phép tính dòng chế độ không cần thiết. Bất cứ cách nào, vui mừng bạn đã sắp xếp nó!
Aaron Jensen

Đó là một điểm tốt. Tôi thực sự không có thời gian để kiểm tra xem gói nào là vấn đề. Tuy vậy vẫn cảm ơn về những gợi ý!
Damian Chrzanowski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.