Not to make this about consumer products, but:
One of the reasons I use an iPhone instead of Android (I own a Nexus 6p in addition to my 6s) is that the typing lag, of all things that lag on Android, infuriates me in particular. My first computer was an 8086 running DOS and while it wasn’t the fastest computer in the world, it was often more limited by the 5 ¼" floppy drive than anything else. And typing certainly never lagged.
How have things gotten this bad?
The average introduced delay (by Compiz) is about 8 ms
This surprised me, I didn’t know the graphics pipeline Compiz used introduced that much delay. Wonder if part of the reason I like XMonad is that things seem “snappier”.
Of the editors listed, I think the only that was noticeably laggy when typing for me was Atom. Atom is egregious. I realize people use it and get on with it fine (like Android phones, which are considerably worse IME), but it did irk me. I’ve been very curious how Microsoft made Visual Code feel so much faster (generally, not typing specifically) than Atom despite both being built on Electron. Does anyone know?
The virtualbox results didn’t surprise me. I think I’m more latency sensitive than most (couple decades of gaming?), so I would explain to coworkers why I used Linux natively rather than within a VM and they said they didn’t experience the lag I was talking about.
Great article - can we start a editor flame war with this article as ammunition?
Although key latency is annoying, I am more often frustrated by the complete inability to type at all. This happens on my phone. This happens on my Windows PC’s and Macs.
For example, I’ll be switching between apps or browsing to a new web page, and I’ve decided that I want to type now. And the application I want to type into is not ready to accept input.
The operating system should treat me and my input (keyboard, mouse) as the highest priority thing. Always.
I’ve read those web pages that provide analogies like “100mSec is like 10,000 years” to the CPU. How can the OS possibly think that making me wait a half-second or 2 seconds with a BUSY cursor is a good idea? Ever?
Just let me type. And move the mouse. Always.
I’m not a fulltime GUI dev (whatever that means), but I always learned that blocking the UI thread is straight up amateur hour.
Except it seems to happen all the time, across many platforms. It’s not hard to keep stuff off the main thread if you’re writing something from scratch. (I guess if you’re gluing libraries together you’re pretty much screwed.)
Realistically, it’s probably some very unintentional interactions that cause this. I believe Outlook had something involving printing and fonts that resulted in a gargantuan stack trace that was causing hangs, but it took a long time to find out because the problem arose in the interaction of components.
This was one of the major problems with Android way back in its early days. Scrolling would block the UI thread, which meant loading would only happen if you weren’t trying to touch the screen. This was particularly frustrating reading web pages where content hadn’t finished loading but you wanted to read the text. I remember this all being a major pain point with Android personally, and was very loudly complained about at the time.
Especially when the main use case for many people’s smartphones is scrolling through bottomless pages of content while it loads. :)