Pavel Fatin, a software developer, measures and analyzes input and scrolling latency in text editors and IDEs, and built the Typometer tool.
Commenters treat his typing latency study as the reference deep dive, citing it in debates over editor latency, such as emacs versus vim.
I love the concept of Atom and have a lot invested in its success. That being said, I switched back to Sublime because of the responsiveness, and here's why:
Programming (for me) is a craft. When I'm in the flow of coding, there's a conversation between me and my program, mediated through the editor (and my REPL). Even a subtle typing lag is enough to subtly disrupt that flow state – the speed of thought and text no longer coincide, and that slight, almost subliminal perception of delay build into a sense of frustration and just being out of sync with my program.
It's a problem that's most noticeable in its absence. Like when you go to the gym for the first time in a while and realize "oh, yeah, this feeling is what I've been missing", switching from Atom back to Sublime feels... right, refreshing.
For a great analysis of typing latency, and why it's important, see: https://pavelfatin.com/typing-with-pleasure/
(I am happy Atom is still moving forwards, though, and eagerly await the day I can switch fully from Sublime. Easy modification of ones own tools is another big component of my personal programmer-as-craftsman ideal.)
What was Atom good for, when compared with something like Visual Studio Code?
I recall reading about typing latency and it seemed to come out as one of the slower options: https://pavelfatin.com/typing-with-pleasure/
I guess it would have occupied a similar place as Brackets, another vaguely similar project? https://brackets.io/
Then again, with how popular VSC has become and with how insanely many extensions there are for it, using any other editor feels a bit... counterproductive at times?
Personally, i'm using the following:
- CLI: nano (vim works too, I just like the simplicity more)
- Simple text editing: Notepad++ or similar (usually whatever is on the system on *nix)
- Some scripting, but nothing too serious: Visual Studio Code
- Development in larger and more complex codebases: JetBrains products (e.g. IntelliJ IDEA, WebStorm and so on)
This is from 2015, but emacs still has higher typing latency than vim in 2024.
https://pavelfatin.com/typing-with-pleasure/
If you have better numbers and comparisons for emacs keypress-to-pixel latency, etc. I'd be interested.
Note classic vi started up faster than vim.
Device makes little to no difference: Raspberry Pi 5, MacBook Pro M1, ThinkPad P1, etc. - emacs is clunky on all of them. I like emacs and it's my daily driver. But it isn't fast.
see also:
"Computer latency: 1997-2017" https://danluu.com/input-lag/
"Measuring keyboard-to-photon latency with a light sensor" https://thume.ca/2020/05/20/making-a-latency-tester/
Modern day tools such as Slack, VS Code and other Electron & browser based apps do bring a fair amount of lag into day to day work.
The common denominator there is browser tech & I think that will improve with time. And network-delivered services like Google Maps & Wikipedia are best compared to CD and DVD-ROM based services like MapPoint and Encarta, which had their own latency and capacity challenges.
In the meantime, you can still use tools like vim for low-latency typing. And it’s kind of interesting to see a Java GUI (IDEA) perform as well as it [has](https://pavelfatin.com/typing-with-pleasure/).
I can't think of a more bloated way to communicate than putting a browser in the middle. For some quick numbers, compare web browser input latency to terminal [0] where one might run an IRC client. Even emacs [1,2] is fast and light in comparison.
[0] https://beuke.org/terminal-latency/#:~:text=6.2-,firefox%20(121.0.1-1),-10.3 [1] https://danluu.com/term-latency/#:~:text=terminal.app%20and%20emacs-eshell%20are%20at%20roughly%205ms%20unloaded%2C%20small%20enough%20that%20many%20people%20wouldn%E2%80%99t%20notice [2] https://pavelfatin.com/typing-with-pleasure/#:~:text=0.8-,Emacs,19.2,-5.3
I don't care about memory usage for editors as much I care about input latency and responsiveness.
Jetbrains (IDEA IntelliJ, Pycharm, etcetc) put a lot of effort into making their IDE low latency as it was getting to a point of being almost ridiculous. Their editor is built in Java, and they run on their own runtime as they have so many hacks and tweaks to make it work as a desktop app as well (font rendering, etc).
Pavel Fatin has a [great article](https://pavelfatin.com/typing-with-pleasure/) about typing latency and his work around implementing this in IntelliJ, well worth a read.