Measured: Typing latency of Zutty compared to other terminal emulators (2021)
tomscii.sig7.se
tomscii.sig7.se
1) Extremely fast GPU-accelerated terminals have a latency of slightly more than one frame due to only rendering once per frame (for performance and latency reasons).
2) Gnome-terminal sucks.
3) Old school terminals, like xterm, are extremely slow in practice, but look very fast on benchmarks like this, as they render on TTY input and do not wait (thus wasting time and latency rendering unseen changes).
4) This article is old, and misses out a lot of optimization work that has occurred on Alacritty.
5) The author of this article has a 60hz monitor. These numbers would be unreproducable on higher refresh monitors.
Am I missing something?
Kitty statically renders at 100hz, thus skews numbers a bit; however, this also proves all this guy measured was "time to next frame", not actual performance numbers.
https://sw.kovidgoyal.net/kitty/conf/#conf-kitty-performance
To get any better, you'd really want something like windowed VRR to consistently work on your target OS, and then any issues in Alacritty solved (if any) to take advantage of that.
If a terminal program running on current low-end PC hardware can't handle updating/drawing within 1/60th of a second, something is very wrong.
i think you did not understand the article
This will still feel laggy, just a different kind of lag to the one that you perceive using a high latency terminal.
Does it? I just compared it to zutty and honestly couldn't tell a difference as far as input latency is concerned.
That said, not all Vte based terminals are equal, IIRC last time I had to hunt quite far to find one that handled some of the more esoteric key modifier combinations properly, and since then I've been settled on it (Sakura)
It is interesting to see the numbers laid out like this, though.
In older games like CS 1.6 I believe I could feel the difference between say 10 and 40 ms ping. Maybe PS/2 keyboards were faster. I got the feeling older computers were way faster to respond ... but I might remember wrong.
I don't know the specific devices you've been using over time, but in general the measurements in the following article back up your memory: https://danluu.com/input-lag/
it's common for computers with less latency to also have less throughput; an arduino, the avr kind, can reliably respond to inputs in less than 200 nanoseconds
but these 'toy' computers are capable of running a word processor or spreadsheet, writing email, browsing the web (without js), compiling c, running an ide, etc. the zx spectrum even had a first-person 3-d shoot-em-up called elite. so i don't think it's pointless
So why would you expect it to be better if you shrunk them down to micro size? That is the whole point of my comment, that the observed latency is better explained as a function of hardware/software complexity and not "year of production". If you understand this, it should not surprise you at all that most contemporary desktops have the latency characteristics they do since we have seen it before in the old supers/workstations, their closest equivalents in terms of hw/sw complexity and capability. Of course it could be better and some are but you won't find them in that article.
>but these 'toy' computers are capable of running a word processor or spreadsheet, writing email, browsing the web (without js), compiling c, running an ide, etc. the zx spectrum even had a first-person 3-d shoot-em-up called elite. so i don't think it's pointless
Can it perform those tasks all at the same time like we expect now or like a mainframe/workstation user would have expected then? When you look at the entire landscape of computing hardware and software it is difficult not to see the early micros in that light. An extreme example would be the Altair 8800. I don't see how you could describe that computer as anything other than a plaything for enthusiasts. I made the analogy between modern desktops and old supers which you seem to agree with; could you even say that an early micro is the rough equivalent of a 50's mainframe with a straight face? It should be but the analogy is more difficult to justify: 36-bit vs 8-bit words, FORTRAN vs BASIC, FPU (some) vs no FPU, at every level of the analysis there are compromises. It should be clear that the micro represents an extremely compromised version of general computing that would be alien not only to us but to the serious computer user in the 70s/80s and yet their characteristics should be held as a benchmark for computing devices in general? Outside the context of "the home computing experience" they make for a poor comparison. Unfortunately there is great ignorance in this area due to the disproportionate focus on micros when discussing historical computing. Videos and articles on the Apple II series, awash with insufferable amounts of sentimentality, are a dime a dozen but you will be lucky to find anything on the IBM TYPE 704, a much more interesting and equally significant machine.
In practice, if you actually measure time from keypress to event, you'll find that modern "gaming" keyboards are actually laggy[0].
>if you actually measure time from keypress to event
Nobody measures keyboard latency this way because when you do the keyboards with less key-travel (Apple Magic) end up with lower "latency"; clearly an absurd result and not at all what you are actually trying to measure. It does not line up with anyone's definition of keyboard latency.
This article has been posted in response in the other threads: https://www.rtings.com/keyboard/tests/latency
You'll find most keyboards in your link, despite these fullrate-enabled high poll rates, actually have higher latency from keypress to event than what PS2 trivially achieved.
Which, by the way, is consistent with the findings in Danluu's article ("a joke"), showing that pressing 2 keys at once might not be as accurate, but does not completely compromise the results, relative to using a mechanical arm.
Note that Danluu documents his methodology, and even expresses that he would prefer a mechanical arm setup.
Which is why...
>That article is a joke.
Is undeservedly unkind.
I prefer to cap FPS in games for the same reason, if my PC can't deliver consistent frame rate.
This jitter is minimized, although not eliminated, with technologies such as Freesync, now part of HDMI and DisplayPort specs.
This is worth consideration when selecting a screen today.
It does quite a bit. e.g.:
If your refresh rate is 60Hz, that's some 16.6ms per frame.
If the frame takes 16.7ms and thus isn't ready by the deadline, you get either tearing (very visible, annoying, experience breaking) or your frame takes 33.3ms, which is a lot of Jitter.
Jitter between 16.6ms and 33.3ms or tearing, are both much worse than 16.7ms you could get with freesync, which is just some 100µs of jitter.
Even at 120Hz, the barely miss deadline case would be half the jitter, but still 8ms vs 50µs. And the tearing alternative is still every bit as horrible.
https://www.digitaltrends.com/wp-content/uploads/2022/10/got...
https://www.digitaltrends.com/wp-content/uploads/2022/10/got...
^^ I don't want this.
Yeah, the average is 60 and VRR will prevent tearing and jitter, but won't magically solve the issue I'm referring to. What I want is this:
https://www.digitaltrends.com/wp-content/uploads/2022/10/fra...
I want the same consistency for terminal input delay. Suckless terminal, for example, has higher latency, but P99 is much closer to avg than Alacritty and urxvt. While on the subject of terminals: st will stay mostly the same when there is additional load present, while all GPU-based terminals will start slipping if I'm doing something that involves GPU (discord voice call, screen sharing/recording, spotify).
Yikes. That is bad. Maybe time to upgrade on the CPU side?
I'm using a 5800x3d and the cache sure helps with 0.1% lows.
On the other hand, if I'm drawing on a graphics tablet, and I've trained up some muscle memory skills with blind contour exercises, I don't care that much about application latency because I'm using the tactile feedback to know what the pen is doing. I only have to look to see where the cursor starts, everything else is minor adjustment.
Keyboarding is also definitely more on the muscle-memory end of the spectrum: you look to see errors, but you can generally type a whole password without seeing it, once you've practiced.
I have to agree with the OP here. I've used urxvt almost every day for years (I remember using it on a laptop with 32 MB of memory), and have never once had a problem with typing latency. I didn't even realize it was a thing people bothered to measure until I saw this article.
There was another HN thread recently where this topic came up, I posted about the human nervous system as a prediction-feedback system where we should expect even small latencies to have a bad effect. And someone replied with the interesting insight that 10-100ms latency feels like "you are using the tool", while <10ms latency feels like "the tool is an extension of your body". (I'd quote the whole thing but I think there's an HN rule against that.)
https://news.ycombinator.com/item?id=35055607
I'd certainly like to see an experiment where typing latency could be controlled artificially, on a high refresh rate monitor. It would test what level of latency/jitter has a perceptible effect on objective typing error rates, and subjective ratings of "satisfaction". Ask them to compare two text input fields where one has more latency than the other, see what degrees of difference are noticeable, to determine the "resolution" of time perception for fine motor tasks. I would wager that for good typists the "threshold of perceptibility" is as low as 10ms, and perhaps even lower. But that's based on my own intuition and experience; I'd love to know for sure.
Seems like that's similar to how Vim can feel so smooth to use, with experienced users not even thinking about what keys to press but just what operation to do, as the inputs can be combined in intuitive ways and the entire program has very low latency to do anything. Very different from "ugh, now I again need to move my hand to the mouse to select that bit of text".
i mean it isn't going to convince anyone who says they 'have never once had a problem with typing latency'
> [...]
> The screen resolution was 1920x1080 and the LCD refresh rate 60 Hz
How exactly can xterm have an average end-to-end latency of 2ms, if on average you need to wait 8ms for the next frame?
The thing is that suckless people simply want to render less, and they have always kept a way to delay rendering in st. Also, the current latency is good enough that no one really complains. TBH, it's about 1~2 frame latency on 60 fps displays, and you hardly notice the difference.
What's throughput in this case?
I think Terminal.app on macOS is likely the inverse of this… it likely has a fair amount of input lag, but holy moly can it handle a lot of output being dumped at once without breaking a sweat.
The more advanced version is putting together a microcontroller which acts as a usb keyboard pressing a key, then backspace, then the key again, and uses a light sensor aimed at the right part of the screen to detect rendering in a repeatable way (slightly different fonts/ positions might change when it triggers but that’s likely on the order of a few ms tops, much less than the variance from frame boundaries).
> Some people have asked why kitty does not perform better than terminal XXX in the test of sinking large amounts of data, such as catting a large text file. The answer is because this is not a goal for kitty. kitty deliberately throttles input parsing and output rendering to minimize resource usage while still being able to sink output faster than any real world program can produce it. Reducing CPU usage, and hence battery drain while achieving instant response times and smooth scrolling to a human eye is a far more important goal.