Tôi đã thêm hai dòng sau vào đầu của tôi init.el
:
(setq gc-cons-threshold (eval-when-compile (* 1024 1024 1024)))
(run-with-idle-timer 2 t (lambda () (garbage-collect)))
Điều đó có nghĩa là thay vì thu gom rác cứ sau 800kb bộ nhớ được phân bổ, Emacs làm như vậy khi không hoạt động, tức là khi tạm dừng không làm phiền tôi. (Nó cũng thu thập sau khi phân bổ 1GB bộ nhớ, nhưng tôi không nghĩ điều đó sẽ xảy ra).
Điều này đã cải thiện thời gian khởi động của tôi khoảng hai phần ba. Về lý thuyết, nó cũng nên cải thiện hiệu suất nói chung. Có bất kỳ nhược điểm của phương pháp này?
(eval-when-compile (* 1024 1024 1024))
bằng most-positive-fixnum
(vui lòng làm như vậy, tôi khá chắc chắn rằng mọi người gặp câu hỏi của bạn đều sao chép mã của bạn vào cấu hình của họ) .
gc-cons-threshold
cao hơn mức bạn sẵn sàng thực sự đạt được tại bất kỳ thời điểm nào, bởi vì bạn phải giả định rằng bạn sẽ thực sự đạt được giá trị đó theo thời gian (sau tất cả, ai biết được có thể tích lũy bao nhiêu rác bởi một số nhiệm vụ không nhàn rỗi bất ngờ nhiệt tình). Tôi không thấy một vấn đề cụ thể nào khi kích hoạt gc với bộ đếm thời gian nhàn rỗi, nhưng tôi nghĩ rằng việc đặt ngưỡng cho gc không nhàn rỗi cao như điều này có vẻ như OTT và ấn tượng của tôi là giá trị có thể được chọn là "cao hơn tôi sẽ không bao giờ cần "thay vì" cao nhất tôi sẵn sàng sử dụng ".