EmacsがLinuxよりもWindowsで起動するのに時間がかかるのはなぜですか?


14

構成:

  • 1つのシステム
  • デュアルブートとしてのOS Windows 10
  • デュアルブートとしてのOS Ubuntu 15.10
  • GUIを使用したEmacs 25.0.1

1つのdot-emacsファイルとすべてが.emacs.dフォルダーにあります(パッケージもにあります.emacs.d)。これらのファイルはすべて1つのDropboxフォルダーにあります。

Windowsの10日:私は、シンボリックリンクdot-emacs.emacs.dWindowsでホームフォルダからDropboxの中の場所へ。

Linux / Ubuntu 15.10の場合:Ubuntuホームフォルダー(/ home / user /からDropboxの場所へのシンボリックリンクもdot-emacsあり.emacs.dます。

そのため、Emacsに関連するすべてのファイルは、さまざまなオペレーティングシステムにわたって1つの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)
  • 1つのハードディスク( `.emacs.d内のすべてのファイル)と両方のOSが同じSSD上にあります)。
  • ハードウェア

1つの違い:

  • WindowsまたはLinux用のコンパイル済みEmacsは、それぞれWindowsまたはLinuxプラットフォームで実行されています。それが唯一の違いです。

UbuntuでのEmacsの起動時間がWindowsよりも著しく短い理由を理解するのに苦労しています。


2
これがどのビルドであるかを言及するのを忘れました。また、裸のEmacsセッションの起動時間をと比較する必要がありますemacs -Q
wasamasa

(message emacs-init-time)起動時間を測定する必要があります。私の知る限り、これは関数に限定されていません。それでは、どうやってemacs -Qそれを測定できますか?
-ReneFroger

1
M-x emacs-init-time RET
ジョルダーノ

1
この問題も見られます。Linuxではemacsの起動に5〜6秒かかりますが、Windowsでは1分かかります。ありがたいことに、Windowsは私の仕事の主なOSではありません。
カウシャルモディ

1
GCCが推測するからです。Windows EmacsはGCCでコンパイルされますが、これはWindowsには適していません。多くのバグなどがあります。ビジュアルC ++でEMACSをコンパイルする方法があれば、パフォーマンスを確認したいと思います。
ジョアンパウロアンドラーデ

回答:


21

論説:Windowsは遅いだけです。

私はWindows(Cygwinおよびネイティブ)とGNU / Linux(Arch)の両方でEmacsを定期的に使用していますが、これにも気づきました。答えは、多くの分野、特にファイルシステム操作1およびスレッド化/分岐操作2において、LinuxはWindowsよりも単純に速いということだと思います。

パフォーマンスの違いは、git、特にMagitを使用するときに最も顕著に例示されると思います(ステータスバッファーに対してかなりの数のコマンドを実行するため)。GitはWindowsで非常に遅くなります。実際、非常に遅いため、WindowsでDropboxフォルダーのコードを編集し、Linux VPSに同期されるのを待ってから、Windowsで単純に使用するのではなく、SSH経由でMagitを使用します。

time git statusEmacsマスターブランチで行うことは、Archで平均0.025秒かかります。Windows(ネイティブ)では0.075〜0.10秒、Windows(cygwin)は0.200秒かかります。大したことではないように思えるかもしれませんが、Windowsでは3〜4倍遅くなります。

また、特定のウイルス対策ソフトウェア(特にMcAfee)が大幅な速度低下を引き起こす可能性があることに注意する必要があります。McAfeeのオンアクセススキャナーが有効になっていると、物事が著しく遅くなります。Cygwin git statusは最大2分かかることがあります!オフにした後のみ、上記の時間を取得できます。


余談:magit-refresh-verboseステータスが更新される変数を見つけました。magit-statusEmacsマスターブランチのバッファーを更新する場合があります。

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(アーカイブ、さらに悪いハードウェア、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/…)私の場合、速度が大幅に向上しました。
ジュン

1
@joonはい、関連するすべてのパスは既にmyにありexec-pathます。
ナニー

なるほど-これもLinuxボックスでテストする必要があります。ありがとう!
ジョーン

@joon問題ありません。Windowsでこれを高速化する方法を見つけたら、私に知らせてください。それは本当に苦痛です。
ナニー

1
しかし、疑問はまだ残っています.Gitがなくても、WindowsでEmacsが顕著に遅いのはなぜですか?
-ReneFroger

0

たぶん、あなたはemacs-serverをセットアップして、より良い体験をすることができます。このアプローチを使用するか、デーモンとしてemacsを実行すると、emacsclientを使用して、別のemacsインスタンスをロードせずに新しいウィンドウを開始できます。それは素晴らしいアプローチです。Windowsではテストしていませんが、使用方法を説明するリンクを次に示します。それがあなたのお役に立てば幸いです。

Emacsサーバー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.