为什么在Windows上启动Emacs比在Linux上启动需要更长的时间?


14

组态:

  • 一个系统
  • OS Windows 10双启动
  • 操作系统Ubuntu 15.10作为双启动
  • 具有GUI的Emacs 25.0.1

我的dot-emacs文件.emacs.d夹中有一个文件,所有内容(这些包也位于中.emacs.d)。所有这些文件都位于一个Dropbox文件夹中。

在Windows 10上:我将Windows中的home文件夹中的dot-emacs和链接.emacs.d到Dropbox中的位置。

在Linux / Ubuntu 15.10上:我也将dot-emacs和链接到.emacs.d了我的Ubuntu主文件夹(/ home / user /)到Dropbox中的位置。

因此,与Emacs相关的所有文件都存储在跨各种操作系统的一个Dropbox文件夹中。

Windows和Linux在同一磁盘上以双重引导的方式运行,因此在相同的硬件上也是如此。

当我在Windows上启动Emacs时,需要7.4秒才能启动。

当我在Linux上启动Emacs时,仅需2.3秒即可启动。

带有图形GUI的Emacs和版本25.0.1都可以使用。两种操作系统都位于同一SSD驱动器上的同一台计算机上。因此它也是相同的硬件。

在操作系统(Windows 10和Ubuntu 15.10)上,以下内容相同:

  • Emacs软件25.0.1版
  • 配置文件(.emacs.d)
  • 一个硬盘(.emacs.d中的所有文件)和两个OS都在同一SSD上。
  • 硬件

区别之一:

  • Windows或Linux的编译Emacs分别在Windows或Linux平台上运行。那是唯一的区别。

我在努力理解为什么Emacs在Ubuntu上的启动时间比Windows短得多。


2
您忘记提及这是什么版本。另外,您应该将裸Emacs会话的启动时间与进行比较emacs -Q
wasamasa

我需要(message emacs-init-time)测量启动时间。据我所知,这不限于功能。那我该如何测量呢emacs -Q
ReneFroger

1
M-x emacs-init-time RET
佐丹奴

1
我也看到这个问题..我的emacs在Linux上需要5-6秒才能启动,而在Windows上则需要一分钟。幸运的是,Windows不是我工作的主要操作系统。
2015年

1
我猜是因为海湾合作委员会。Windows Emacs是在GCC中编译的,在Windows中不是很出色,存在许多错误,等等。如果有一种用可视C ++编译EMACS的方法,我想看看它的性能。
若昂·保罗·安德拉德

Answers:


21

文章:Windows速度很慢。

我经常在Windows(Cygwin和本机)和GNU / Linux(Arch)上使用Emacs,我也注意到了这一点。我相信答案是,Linux在许多方面仅比Windows快得多,最明显的是在文件系统操作1和线程/分支操作2中

我认为在使用git时,尤其是在Magit上,可以明显地看出性能上的差异(因为它为状态缓冲区运行了很多命令)。Git在Windows上非常慢。实际上,它是如此之慢,以至于我经常在Windows上的Dropbox文件夹中编辑代码,等待将其同步到Linux VPS,然后通过SSH使用Magit,而不是在Windows上简单地使用它。

这样做time git status的Emacs的主分支发生在拱门的平均0.025秒我。在Windows(本机)上,需要0.075-0.100秒,而Windows(cygwin)需要0.200秒。这看起来似乎并不多,但这意味着它在Windows上要慢3-4倍。

我还应注意,某些防病毒软件(尤其是McAfee)可能会导致速度严重下降。启用McAfee的On-Access Scanner后,事情对我而言明显变慢了。Cygwin git status可能需要2分钟!只有将其关闭后,我才能获得上述的时间。


另外:我刚刚找到了变量magit-refresh-verbose,状态会刷新一次。以下是刷新magit-statusEmacs master分支上的缓冲区的一些时间:

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


您是否尝试将git相关命令的路径添加到exec-path?(stackoverflow.com/questions/16884377/…)就我而言,它显着提高了速度。
2015年

1
@joon是的,所有相关路径已在my中exec-path
保姆2015年

我明白了-我也应该在linux机器中对此进行测试。谢谢!
2015年

@joon没问题。如果您找到在Windows上加快此速度的方法,请告诉我。真的很痛苦
保姆2015年

1
但是问题仍然存在..即使没有Git,为什么Emacs在Windows上明显慢一些?
ReneFroger '16

0

也许您可以尝试设置emacs-server,以便获得更好的体验。使用这种方法或将emacs作为守护程序运行,您可以仅使用emacsclient来启动新窗口而不加载其他emacs实例。这是一个很好的方法。我尚未在Windows中对其进行过测试,但以下链接说明了如何使用它。希望对您有帮助。

Emacs服务器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.