ทำไม Emacs ใช้เวลานานในการเริ่มต้นบน Windows มากกว่าบน Linux


14

การกำหนดค่า:

  • ระบบเดียว
  • ระบบปฏิบัติการ Windows 10 เป็นบูตคู่
  • ระบบปฏิบัติการ Ubuntu 15.10 เป็นบูตคู่
  • Emacs 25.0.1 พร้อม GUI

ฉันมีหนึ่งdot-emacsไฟล์และทุกอย่างใน.emacs.dโฟลเดอร์ของฉัน(แพคเกจยังอยู่ใน.emacs.d) ไฟล์เหล่านี้ทั้งหมดอยู่ในโฟลเดอร์ Dropbox หนึ่งโฟลเดอร์

ใน Windows 10: ฉันเชื่อมโยงdot-emacsและ.emacs.dจากโฟลเดอร์โฮมใน Windows ไปยังตำแหน่งต่างๆใน Dropbox

บน Linux / Ubuntu 15.10: ฉันได้ symlinked dot-emacsและ.emacs.dจากโฟลเดอร์บ้าน Ubuntu ของฉัน (/ home / user / ไปยังตำแหน่งใน Dropbox ด้วย

ดังนั้นไฟล์ทั้งหมดที่เกี่ยวข้องกับ Emacs จะถูกเก็บไว้ในโฟลเดอร์ Dropbox หนึ่งข้ามระบบปฏิบัติการต่าง ๆ

Windows และ Linux กำลังทำงานเป็นบูตคู่บนดิสก์เดียวกันดังนั้นจึงเป็นฮาร์ดแวร์เดียวกัน

เมื่อฉันเริ่ม Emacs บน Windows จะใช้เวลา7.4วินาทีในการเริ่มต้น

เมื่อฉันเริ่ม Emacs บน Linux มันใช้เวลาเพียง2.3วินาทีในการเริ่มต้น

นี่คือทั้งกับ Emacs ที่มีกราฟิก GUI และรุ่น 25.0.1 ระบบปฏิบัติการทั้งสองตั้งอยู่บนคอมพิวเตอร์เครื่องเดียวกันบนไดรฟ์ SSD เดียวกัน ดังนั้นมันจึงเป็นฮาร์ดแวร์เดียวกัน

สิ่งต่อไปนี้เหมือนกันในระบบปฏิบัติการ (Windows 10 และ Ubuntu 15.10):

  • ซอฟต์แวร์ Emacs รุ่น 25.0.1
  • ไฟล์การกำหนดค่า (.emacs.d)
  • หนึ่งฮาร์ดดิสก์ (ไฟล์ทั้งหมดภายใน `.emacs.d) และทั้งสองระบบปฏิบัติการอยู่ใน SSD เดียวกัน)
  • ฮาร์ดแวร์

หนึ่งความแตกต่าง:

  • Emacs ที่คอมไพล์แล้วสำหรับ Windows หรือ Linux กำลังทำงานบนแพลตฟอร์ม Windows หรือ Linux ตามลำดับ นั่นคือความแตกต่างเท่านั้น

ฉันพยายามที่จะเข้าใจว่าทำไม Emacs ถึงมีเวลาเริ่มต้นสั้นลงอย่างเห็นได้ชัดบน Ubuntu มากกว่า Windows


2
คุณลืมที่จะพูดถึงสิ่งที่สร้างนี้ นอกจากนี้คุณควรจะเปรียบเทียบเวลาเริ่มต้นของเซสชัน Emacs ที่emacs -Qไม่มีค่า
wasamasa

ฉันต้องการที่(message emacs-init-time)จะวัดเวลาเริ่มต้น นี่ไม่ได้ จำกัด อยู่กับฟังก์ชั่นเท่าที่ฉันรู้ แล้วฉันจะวัดมันได้emacs -Qอย่างไร
ReneFroger

1
M-x emacs-init-time RET
giordano

1
ฉันเห็นปัญหานี้เช่นกัน .. emacs ของฉันใช้เวลา 5-6 วินาทีในการเริ่มต้นบน Linux แต่ไม่เกินหนึ่งนาทีบน Windows โชคดีที่ Windows ไม่ใช่ระบบปฏิบัติการหลักของฉันในที่ทำงาน
Kaushal Modi

1
เป็นเพราะ GCC ฉันเดา Windows Emacs รวบรวมใน GCC ซึ่งไม่ดีใน Windows มีข้อบกพร่องมากมายและอื่น ๆ หากมีวิธีรวบรวม EMACS ด้วย Visual C ++ ฉันต้องการดูประสิทธิภาพ
João Paulo Andrade

คำตอบ:


21

Op-ed: Windows ช้า

ฉันใช้ Emacs เป็นประจำทั้ง Windows (Cygwin และ native) และ GNU / Linux (Arch) และฉันก็สังเกตเห็นสิ่งนี้เช่นกัน ผมเชื่อว่าคำตอบคือว่าลินุกซ์เป็นเพียงธรรมดาได้เร็วขึ้นกว่า Windows ในหลายพื้นที่โดดเด่นที่สุดในการดำเนินงานของระบบไฟล์1และเกลียว / การดำเนินงานของฟอร์ก2

ฉันคิดว่าความแตกต่างของประสิทธิภาพเป็นสิ่งที่เห็นได้ชัดที่สุดเมื่อใช้ git และโดยเฉพาะอย่างยิ่ง Magit (เนื่องจากมันทำงานได้สองสามคำสั่งสำหรับบัฟเฟอร์สถานะ) Git ทำงานช้าบน Windows อย่างน่ากลัว ในความเป็นจริงมันช้ามากที่ฉันมักจะแก้ไขรหัสบน Windows ในโฟลเดอร์ Dropbox ของฉันรอให้ซิงค์กับ Linux VPS ของฉันแล้วใช้ Magit ผ่าน SSH แทนที่จะใช้มันบน Windows

การทำtime git statusในสาขาหลักของ Emacs ใช้เวลาเฉลี่ย 0.025 วินาทีใน Arch สำหรับฉัน บน Windows (ดั้งเดิม) ใช้เวลา 0.075-0.100 วินาที, Windows (cygwin) 0.200 วินาที นั่นอาจดูเหมือนไม่มาก แต่นั่นก็หมายความว่ามันช้าลง 3-4 เท่าใน Windows

ฉันควรทราบด้วยว่าซอฟต์แวร์ป้องกันไวรัส (โดยเฉพาะอย่างยิ่ง McAfee) อาจทำให้การทำงานช้าลงอย่างมาก เมื่อเปิดใช้งานเครื่องสแกน On-Access ของ McAfee สิ่งต่าง ๆ จะช้าลงอย่างเห็นได้ชัดสำหรับฉัน Cygwin git statusใช้เวลาสูงสุด 2 นาที! หลังจากปิดฉันจะได้รับเวลาที่ฉันกล่าวข้างต้น


นอกเหนือจาก: ฉันเพิ่งพบตัวแปรmagit-refresh-verboseซึ่งครั้งที่สถานะรีเฟรช ต่อไปนี้เป็นบางครั้งสำหรับการรีเฟรชmagit-statusบัฟเฟอร์ในสาขาหลักของ Emacs:

Windows (ดั้งเดิม)

GNU Emacs 24.5.1 (i686-pc-mingw32) of 2015-04-11 on LEG570
Magit 20151028.1649, Git 2.6.1.windows.1, Emacs 24.5.1
Refreshing buffer `*magit: emacs'...done (9.317s)
Refreshing buffer `*magit: emacs'...done (9.318s)
Refreshing buffer `*magit: emacs'...done (9.357s)

Windows (cygwin)

GNU Emacs 25.0.50.1 (i686-pc-cygwin) of 2015-07-29 on NAND-LT
Magit 20151015.22, Git 2.5.0.234.gefc8a62, Emacs 25.0.50.1
Refreshing buffer `*magit: emacs'...done (4.609s)
Refreshing buffer `*magit: emacs'...done (4.720s)
Refreshing buffer `*magit: emacs'...done (4.626s)

GNU / Linux (Arch, ฮาร์ดแวร์ที่แย่กว่า, VPS)

GNU Emacs 25.0.50.6 (x86_64-unknown-linux-gnu, GTK+ Version 3.18.2) of 2015-10-26
Magit 20151028.1649, Git 2.6.2, Emacs 25.0.50
Refreshing buffer ‘*magit: emacs’...done (0.517s)
Refreshing buffer ‘*magit: emacs’...done (0.507s)
Refreshing buffer ‘*magit: emacs’...done (0.523s)

ความเร็วที่เร็วขึ้นของ Cygwin ทำให้ฉันประหลาดใจ

  1. http://www.slideshare.net/PrincipledTechnologies/comparing-file-system-performance-red-hat-enterprise-linux-6-vs-microsoft-windows-server-2012

  2. /programming/12878980/speed-performance-of-a-qt-program-windows-vs-linux


คุณพยายามเพิ่มพา ธ สำหรับคำสั่งที่เกี่ยวข้องกับคอมไพล์exec-pathหรือไม่? ( stackoverflow.com/questions/16884377/… ) ในกรณีของฉันมันปรับปรุงความเร็วอย่างมาก
จุน

1
@ joon ใช่เส้นทางที่เกี่ยวข้องทั้งหมดอยู่ในฉันexec-pathแล้ว
พี่เลี้ยง

ฉันเห็น - ฉันควรทดสอบในกล่องลินุกซ์เช่นกัน ขอบคุณ!
จุน

@ จุนไม่มีปัญหา หากคุณพบวิธีเพิ่มความเร็วใน Windows โปรดแจ้งให้เราทราบ มันเจ็บปวดจริงๆ
พี่เลี้ยง

1
แต่คำถามก็ยังคงอยู่ .. แม้ว่าจะไม่มี Git ทำไม Emacs ถึงช้าลงอย่างเห็นได้ชัดบน Windows
ReneFroger

0

บางทีคุณอาจลองติดตั้ง emacs-server เพื่อให้คุณได้รับประสบการณ์ที่ดีขึ้น การใช้วิธีนี้หรือเรียกใช้ emacs เป็น daemon คุณสามารถใช้ emacsclient เพื่อเริ่มหน้าต่างใหม่โดยไม่โหลดอินสแตนซ์ emacs อื่น มันเป็นวิธีการที่ดี ฉันยังไม่ได้ทดสอบใน Windows แต่นี่คือลิงค์ที่อธิบายวิธีใช้ ฉันหวังว่ามันจะช่วยให้คุณผู้ชาย

เซิร์ฟเวอร์ Emacs

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