5 ms·
It's fantastic! If you are on a mac you can try it right now with emacs-plus[1]. Emacs plus even works natively with apple m1. Doom[2] with CIDER[3] is such an
by fayten 5y ago
It's fantastic! If you are on a mac you can try it right now with emacs-plus[1]. Emacs plus even works natively with apple m1. Doom[2] with CIDER[3] is such an incredible dev experience and I've only recently started using clojure. Native comp makea everything so snappy.
[1]https://github.com/d12frosted/homebrew-emacs-plus https://github.com/d12frosted/homebrew-emacs-plus
[2]https://github.com/hlissner/doom-emacs https://github.com/hlissner/doom-emacs
[3]https://github.com/clojure-emacs/cider https://github.com/clojure-emacs/cider
- taeric 5y agoI'm torn. I do feel it makes improvements. But I also add "-O3" to my compilation. And I also feel that makes things faster. I add "-march=native" on my Linux box. Again, feels faster. What worries me, is that most of the feeling is just placebo. I know native is faster, but by how much? Are there any good benchmarks for measuring emacs speed?
- michaelhoffman 5y agoIf you load a bunch of packages at startup that take several seconds to load that is as good a benchmark as any. I have this at the end of my init.el: (run-with-idle-timer 3 nil (lambda () (let ((inhibit-message t)) (message "Emacs ready in %s with %d garbage collections." (format "%.2f seconds" (float-time (time-subtract after-init-time before-init-time))) gcs-done))))
- taeric 5y agoMy startup had always been under a second. On a Mac, the command to get the path right is the longest pole. Remains so in native. That said, I'll play with it some. Still looking for a broader benchmark, though. Edit: Looks like I lied. Startup is about 2 seconds, but is mainly dominated by a network hit to refresh packages. (So, slower if I'm on a bad network... I should fix that.) Your script, though, is odd, as I can get to the Messages buffer and wait a second before I see that message show up. (Also, you can just eval (emacs-init-time))
- michaelhoffman 5y agoI'm sure I got this code from someone else, was going to replace it with (emacs-init-time) myself but I suppose it's nice to only have the first two numerals after the decimal point which this code does and (emacs-init-time) doesn't.
- taeric 5y agoFunny, coming back to this, if I recompile without native compilation and any other flags, I get faster startups. By upwards of 1 second. (So, from almost 2 seconds to almost 1 second.) An emacs -q startup is roughly the same. And I maintain that many things feel snappier with the optimization flags.
- ashton314 5y agoApropos of the path: have you tried setting your path in, say, `.zshenv`? When I started using that, I was able to shave off a significant amount of time because Emacs didn't have to fire up a full interactive shell to grab the env vars.
- taeric 5y agoThis is only on a Mac, right? I'll look into it, not a problem on my other machine.
- 5e92cb50239222b 5y agoIME the only thing -march=native does is it makes it impossible to boot your system on an older microarchitecture (which is trivial with Linux otherwise — I really don't understand those who bring their bad Windows habits and do a reinstall when moving between systems).
- taeric 5y agoI mean, it would do that. But, I also have never just moved the hard drive between machines. I've only owned two machines in the last decade. So, not even something I have had a lot of opportunity to do. Back to the point, though, I'm assuming that libc dynamically does most of the optimizations that native enables?
- wry_discontent 5y agoI second emacs-plus. It's been a very pleasant experience on my new M1, especially relative to the default homebrew version which I could not keep working for more than 10 minutes.