zsh เริ่มช้าอย่างไม่น่าเชื่อ


63

ZSH ใช้เวลาประมาณหนึ่งวินาทีครึ่งในการสร้างหน้าต่างเทอร์มินัลใหม่เพื่อเตรียมพร้อม compinitผมค่อนข้างมั่นใจว่าผู้กระทำผิดเป็น

ฉันยังไม่ได้สามารถที่จะหาเอกสารที่ดีในแต่ดูเหมือนว่ามันควรจะแคชทุกสิ่งที่จำเป็นในไฟล์บางอย่างเช่นcompinit,.zcompdump

เทคนิคใด ๆ ในการเร่งความเร็ว

คำตอบ:


33

oh-my-zshใช้เวลาประมาณ 1.5 วินาทีในการเปิดแล็ปท็อปของฉัน ผมเขียนขึ้นบางส่วนของขั้นตอนที่ผมเอาไปรับที่ลงไปประมาณ 0.25 วินาที

วิญญาณอีกประเภทหนึ่งได้สรุปขั้นตอนที่จำเป็นในการรวมการเปลี่ยนแปลงของฉันเข้ากับสำเนาของ oh-my-zsh ของคุณ

ปัญหาที่ใหญ่ที่สุดคือการที่compinitถูกเรียกว่าช่วงเวลาพิเศษทั้งหมดแทนที่จะเป็นเพียงครั้งเดียวหลังจากที่ความหมายถูกกำหนดอย่างสมบูรณ์ ฉันทำการเปลี่ยนแปลงเหล่านั้นในสาขาของฉันoh-my-zshใน GitHub การเปลี่ยนแปลงได้รับการพูดคุยเกี่ยวกับ GitHub และพวกเขาดูเหมือนจะทำงานได้ดีสำหรับคนไม่กี่คน หวังว่าการเปลี่ยนแปลงจะถูกรวมเข้าoh-my-zshในอนาคตอันใกล้


4
สำหรับผู้อ่านในอนาคตฉันเชื่อว่าการเปลี่ยนแปลงเหล่านี้ทั้งหมดได้ถูกรวมเข้าด้วยกันแล้ว
Michael Mior

1
การเปลี่ยนแปลงอาจถูกย้ายอัปสตรีม แต่การลบ Git ออกจากปลั๊กอินช่วยฉันได้มาก
kylehotchkiss

25

ในขณะที่ ZSH มีการแชร์ที่เป็นธรรมของการชะลอตัวหากคุณพบว่าหน้าต่างเทอร์มินัลว่างเปล่าสักครู่ก่อนที่คุณจะเห็นLast Login:บรรทัดคุณจะต้องล้างไฟล์บันทึกเพื่อดูการปรับปรุงความเร็ว นี่เป็นปัญหาของ OSX Lion และจะต้องทำทุก ๆ เดือน ไม่เป็นไรฉันรู้

คำสั่งคือ:

sudo rm -rf /private/var/log/asl/*.asl

แน่นอนคุณต้องอ่านบทความนี้ล่วงหน้าและเพื่อให้คุณรู้ว่าสิ่งที่เกิดขึ้นเพราะทำงานอะไรที่บอกว่าsudo rmต้องคิดเกี่ยวกับ ฉันใส่ที่นี่เพียงเพราะการใช้ ZSH ของคุณพิสูจน์ความสามารถของคุณด้วยบรรทัดคำสั่งเพื่อเริ่มต้น


1
ขอบคุณเช่นวิธีแก้ปัญหาง่ายๆสำหรับสิ่งที่รบกวนฉันมานาน!
คณบดี

7
ฉันไม่แนะนำให้ใช้-rเนื่องจากไม่มีไดเรกทอรีที่เกี่ยวข้องและไม่จำเป็น การละเว้นจะทำให้น้ำตาน้อยลงหากมีคนพิมพ์sudo rm -rf / private/var/log/asl*.asl(เว้นวรรคต่อหน้า) โดยไม่ได้ตั้งใจ
คณบดี

1
หรือแม้กระทั่งการที่จะเข้าใจผิดมากขึ้นแล้วcd /private/var/log/asl rm -f *.aslสำหรับบันทึกคำตอบนี้ช่วยฉันตั้งแต่เวลาเริ่มต้นที่ใกล้เข้ามา 10 วินาทีขอบคุณมาก!
Garrett Disco

1
ทำงานให้ฉัน! trash /private/var/log/asl*.aslBTW trashจะต้องมีการติดตั้งแน่นอน brew install trash
Mike D

12

การปรับปรุงที่ดีที่สุดของฉันมาจากการลบรายการออกจากส่วน plugin = () ปลั๊กอิน 'github' และ 'brew' นั้นโหลดช้ามาก

ฉันยังลบฮับที่ฉันใช้แทนgitและเร่งความเร็วขึ้นเช่นกัน

ฉันใช้ '/ usr / bin / time zsh -i -c exit' เพื่อบันทึกเวลาเริ่มต้น แต่compinitไม่ได้สร้างความแตกต่างที่ใหญ่พอสำหรับฉัน

มันคงจะดีถ้าได้ยินสิ่งที่คนอื่นทำเพื่อเร่งความเร็ว


1
การลบgithubและbrewปลั๊กอินแก้ไขปัญหาของฉันทันที
Peter Niederwieser

gitและbrewปลั๊กอินมีความสำคัญสำหรับฉัน โดยการลบrubyปลั๊กอินแก้ไขปัญหาของฉัน ขอบคุณ
Ivan ZG Xiao

6

คุณใช้ที่ติดตั้งไว้ล่วงหน้า/bin/zshหรืออันอื่นอยู่ใช่ไหม ฉันถามเพราะ zsh ที่ฉันติดตั้งผ่าน fink เริ่มช้าลงอย่างมากเนื่องจากมีการรวมเทมเพลต zshในขณะที่วานิลลาเริ่มต้นขึ้น

การรันด้วย dumpfile ชัดเจน ( compinit -d dumpfile) ทำให้มันเร็วขึ้นหรือไม่ หน้าคนกล่าวว่า

การเรียกใช้ compinit ครั้งต่อไปจะอ่านไฟล์ที่ถูกทิ้งแทนที่จะทำการเริ่มต้นเต็มรูปแบบ


2
ฉันกำลังใช้ Oh My Zsh (ซึ่งฉันเชื่อว่าใช้ค่าเริ่มต้น / bin / zsh) เมื่อฉันปิดการโหลดปลั๊กอินของ Oh My Zsh และอะไรก็ตามมันจะโหลดเร็วมาก แต่ฉันคิดว่าในกรณีนี้compinitจะไม่ถูกเรียก เมื่อฉันโทรด้วยตนเองcompinitมันใช้เวลาสักครู่ อาจเป็นเพราะ Oh My Zsh เพิ่มการผูกไว้มากมายเพื่อการคำนวณ?
อีไล

5

ตอนนี้ oh-my-zsh ตรวจสอบตัวเลือกการตั้งค่า git พิเศษ oh-my-zsh.hide-status ก่อนทำการสอบถามสถานะ ดังนั้นวิ่ง

git config oh-my-zsh.hide-status 1

บนที่เก็บที่มีปัญหา


.zshrcสำหรับผมผมต้องปิดการใช้งานปลั๊กอินคอมไพล์ใน ขณะนี้ฉันกำลังเผชิญปัญหากับการตอบสนองอินเทอร์เน็ตที่ช้าซึ่งทำให้ zsh ช้าลง
Paschalis

5

Zsh ด้วยตัวมันเองเริ่มต้นขึ้นในเวลาประมาณ 0.1 วินาทีสำหรับฉันซึ่งดีมากพอ ฉันเพิ่งสังเกตุเมื่อฉันเข้าใกล้เครื่องหมายประวัติคำสั่ง 50,000 รายการมันกลายเป็นเหมือน 3 วินาทีในการโหลดพรอมต์แรก

ฉันไม่รู้ว่าพวกคุณกำลังค้นหาสาเหตุอื่น ๆ ทั้งหมดสำหรับการเริ่มต้นช้า แต่ของฉันคือสิ่งที่ฉันคาดเดาครั้งแรก ฉันทำmv ~/.zsh_history zsh_history_backupแล้วและปังเริ่มต้น 3 วินาทีตอนนี้เริ่มต้นที่ 0.1 วินาที อยากรู้อยากเห็น/usr/bin/time /bin/zsh -i -c exitล้มเหลวในการจับเวลาที่ใช้ในการโหลดในประวัติศาสตร์

หากคุณไม่มีคำสั่งนับหมื่นในประวัติ zsh ของคุณนั่นอาจไม่ใช่สิ่งนี้ ฉัน~/.zsh_historyวัดได้ 1.8MB เป็นไปได้มากที่จะวางสิ่งของก้อนใหญ่เป็นคำสั่งในเทอร์มินัลโดยไม่ได้ตั้งใจซึ่งจะทำให้ประวัติศาสตร์ขยายตัวได้อย่างรวดเร็ว (แม้ว่านี่จะเป็นสิ่งที่หลีกเลี่ยงไม่ได้ที่จะทำลายได้อย่างมาก)


นี่คือคำตอบ หากยังไม่ได้ทำอะไรแฟนซี (ปลั๊กอินและแอดออนจำนวนมาก) ด้วย oh-my-zsh ฉันรับประกันได้เลยว่ามันเป็นเพราะบันทึกประวัติ การเปลี่ยนแปลงทันที
Sebastialonso

2

ฉันใช้ชุดรูปแบบ "af-magic"

การเปลี่ยนเป็น "รำพึง" แก้ปัญหาได้

แก้ไข ~ / .zshrc และแก้ไขบรรทัดนั้น:

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"

ขอบคุณสำหรับคำตอบฉันพบว่าการเปลี่ยนจาก af-magic เป็นอย่างอื่นได้แก้ไขปัญหาแล้ว การเรียกคืนความน่าสนใจของ Af-magic ยังคงใช้งานได้ดี ไม่แน่ใจว่าเกิดอะไรขึ้นภายใต้ประทุน
sarat

0

ฉันมีการปรับปรุงความเร็วที่ยอดเยี่ยมจริง ๆ หลังจากล้างไดเร็กทอรี ~ / .oh-my-zsh / plugins / มีปลั๊กอินที่ไม่ได้ใช้อยู่มากมายภายในนั้น


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.