Debug zsh startup time
Dạo gần đây mỗi lần mở terminal lên, zsh của mình khởi động khá chậm. Thực ra là chỉ delay tầm 1, 2s thôi, nhưng việc nhìn màn hình nó đơ ra, mất 1 lúc mới load xong thì cũng hơi khó chịu =)) Nên mình thử google tìm cách debug xem thử xem tại sao nó lại bị chậm thế =]]
Dưới đây là các bước để thử debug xem zsh shell đang bị chậm ở đâu :D
Step 1. Tính thời gian khởi động
Trước hết, thử chạy câu lệnh này xem thời gian khởi động zsh shell của bạn là bao lâu?
time zsh -i -c exit
Step 2. Profiling - Đi tìm xem đâu là process chiếm nhiều thời gian nhất
Đầu tiên, bạn thêm đoạn zmodload zsh/zprof
vào đầu file ~/.zshrc
và zprof
vào cuối file. Mục đích là để load zprof
mod và hiển thị xem khi shell khởi động, nó đang load những tiến trình nào.
Sau đó, bạn thử mở 1 tab terminal mới, kết quả profiling sẽ hiện ra :D
num calls time self name
-----------------------------------------------------------------------------------
1) 1 74.05 74.05 63.23% 74.05 74.05 63.23% a command
2) ....
Command nào chạy mất nhiều thời gian nhất sẽ được show lên hàng đầu :v
Trong trường hợp của mình là compinit
Step 3: Faster compinit
Sau khi google thử thì phát hiện ra là process compinit
là 1 function được kết hợp bởi: completion
và initialize
=))
Function này sẽ load các file trong ~/.zcompdump
files trong máy bạn. Các file này sẽ được sinh tự động. Khi bị sinh quá nhiều/ quá nặng, nó sẽ delay quá trình load file.
=> Mình xoá luôn đi =))) Bạn có thể add thêm đoạn script: rm -rf ~/.zcompdump*
vào đầu của file zshrc cũng okie :v
Sau đó, khởi động lại terminal. Tốc độ được cải thiện đáng kể.
Step 4. Cleanups
Mình cũng nên dò lại 1 lượt các đoạn load không cần thiết trong file ~/.zshrc. Ví dụ như các plugin không dùng đến, các đoạn init chẳng hạn.