Op-ed: Windows is just slow.
I regularly use Emacs on both Windows (Cygwin and native) and GNU/Linux (Arch), and I've noticed this as well. I believe the answer is that Linux is just plain faster than Windows in a lot of areas, most notably in file system operations1 and threading/forking operations2.
I think the difference in performance is most noticeably exemplified when using git, and especially Magit (since it runs quite a few commands for its status buffer). Git is horrendously slow on Windows. It's so slow, in fact, that I often edit code on Windows in my Dropbox folder, wait for it to be synced to my Linux VPS, and then use Magit via SSH, instead of simply using it on Windows.
Doing time git status on the Emacs master branch takes an average 0.025 seconds on Arch for me. On Windows (native), it takes 0.075-0.100 seconds, Windows (cygwin) 0.200 seconds. That may not seem like much, but that means it's 3-4x slower on Windows.
I should also note that certain anti-virus software (McAfee, in particular) can cause massive slowdowns. With McAfee's On-Access Scanner enabled, things are a noticeably slower for me. Cygwin's git status can take up to 2 minutes! Only after turning it off do I get the times I stated above.
Aside: I just found the variable magit-refresh-verbose, which times the status refreshes. Here are some times for a refresh of the magit-status buffer on the Emacs master branch:
Windows (native)
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, worse hardware, 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's faster speed surprised me.
http://www.slideshare.net/PrincipledTechnologies/comparing-file-system-performance-red-hat-enterprise-linux-6-vs-microsoft-windows-server-2012
https://stackoverflow.com/questions/12878980/speed-performance-of-a-qt-program-windows-vs-linux
emacs -Q. – wasamasa Nov 1 '15 at 11:36(message emacs-init-time)to measure the startup time. This is not bounded to a function as far as I know. So how could I measure it withemacs -Qthen? – ReneFroger Nov 1 '15 at 19:32M-x emacs-init-time RET– giordano Nov 2 '15 at 1:03runemacs -Q -f emacs-init-timewill echo the time once init completes. For reference it takes 0.9s on Win7 for me (but ~20-25s with full init). And most of that actually is due toorg(I haven't quite figured out how to bypass that). – Jonathan Leech-Pepin Nov 5 '15 at 17:40