It’s been a long time since I bitched about the atrocious state of computer software. I’ve noted that video games still render at sub 30 frames per second, despite modern GPUs having literally one million times the performance, as measured through FLOPS, as N64 hardware. And recently John Carmack, industry legend, ragequit Facebook because it’s a terribly run corporation.
I’m sure I’ve had another rant in me that I’ve forgotten the link to by now. It doesn’t matter, because I’ve finally had the perfect example of atrociously unperformant software dropped right into my lap.
Get a load of Microsoft’s new civilizational achievement, a chat app that takes a mere ten seconds to load. I don’t know what space age technology they used to get this to work, but I am absolutely blown away.
Yes, this is a real video put out by Microsoft’s marketing department. I have to say that now because I myself wasn’t quite be sure when watching it the first time around. I thought someone was pulling my leg.
But no, this is their legitimate corporate channel. They have videos dating back to over a year, all of which are fairly boring tutorial stuff and generic corporate marketing.
For the record, it took me a while to scroll down to the bottom of their channel page. This is because Google, through YouTube, made the genius decision to remove the ability to sort videos oldest->newest. They did this because they are a monopoly, and because fuck you.
Anyway, what sort of performance improvements are Microsoft so worked up about? They start off by bragging about their chat app taking 9.1 seconds to load, which is a ~2.5x improvement over the old 22.2 second loading time.
Let’s use some back of the envelope calculations to figure out how fast this should have happened. First, SSDs, which are standard these days and on which this was no doubt benchmarked, have latencies of about 250 microseconds. They can have peak bandwidth’s of more than 7 GB/s. That means that in 9.1 seconds, the time it takes to open the app, we’ve had the ability to stream about 64 GB of data from storage, and can’t possibly have been limited by the latency of the SSD. To be clear, this is a chat program that looks like this.
It needs to load a few tiny pictures and some text. Actually, it’s even more pathetic than that, because they took a full second just to launch this blank window.
The old version of Teams launches a tiny black window a frame later.
Which is then followed up by the teams logo.
Let’s recap. The new version of Microsoft Teams takes a full second to launch a blank window which is the first waiting screen, the teaser, so to speak. Then it takes two more seconds to load and render the logo so you can see the real waiting screen. Only after about six seconds does the actual program start appearing in bits and pieces. After five seconds of this, you can use the application.
Need I remind you that this is a chat application? It needs to load in 8×8 bitmaps representing characters for rendering, some other miscellaneous and tiny images, and a configuration file. This should be around a half a megabyte of data. This should be done within about a millisecond, and the application should start within the frame the user clicks on it.
Now sure, when they load your chat history that will take longer, since they have to get that off a server. Considering how little data they’re retrieving, that should take about as long as the ping, which will be about a hundred milliseconds or less, often much less. Somehow, someway, they’ve managed to make this take “only” a full hundred times longer than it ought to in the worst case scenario, and they’re bragging about this.
They aren’t done there. The next thing they brag about is the ability to scroll through a chat history without having too many stutters. In other words, they’ve managed to absolutely nail dynamically prefetching tiny amounts of data. Although in fairness, this is at least a performance improvement where things are now working as they should have from the start.
Joining meetings, something that should take about as long as your ping, takes about 50x longer in the old Teams. It’s down to just around 20-30x longer with the new Teams. That’s because they have to process enormous quantities of… I have no idea. Modern 3D video games render entire 3D worlds at 120 Hz, but there are apparently some huge processing demands on Teams for verifying that someone has joined a meeting. This is basically rocket science, but for computers.
Channel switching speed is improved to 0.9 seconds. You’d think it would depend on the channel we’re switching to, and how many images are displayed in the last few messages. However, we are once again talking about something that should take 100ms tops taking 10 times longer than that. But 10x longer is pretty good for the crack squad at Teams.
Although actually they should also have prefetched this data, since you aren’t joining random channels, but rather one of a very small number of channels, so there’s no excuse for this not being instant. That’s especially true when we see them bragging about how “little” memory they’re using.
FIVE HUNDRED MEGABYTES.
This is a chat app. It is dealing with text, and the occasional picture. It should be taking about a dozen megabytes of memory. The fact that they could reduce the memory footprint by half a gig without any decrease in functionality says everything you need to know about bloat amongst modern software. They’re still an order of magnitude off where they would be if they were merely bloated. It. Is. A. Chat. App.
In the twatter thread, commenter jackdoe points out that you should literally be able to click a button to download Teams on a new computer, install it, and open it up in less than the time it takes the already installed Teams to launch. That is how unperformant this “optimized” program is, and they’re bragging about it.
To be clear, the above is a parody, as is the below.
This is actually a reference to Casey Muratori, who got mad that Microsoft’s terminal was about 1,000x slower than it ought to have been. The Microsoft Pajeets told him that improving the speed at all was a PhD type research project, so he spent two weekends making his own terminal program that indeed runs 1,000x faster. You can see that below.
Simon O’Dwyer however, doesn’t get it.
Mr. Goldberg is much the same.
A while back I bought the Halo MCC edition for PC on Steam. I played it a while, and actually got to enjoy Reach for the very first time. I also got to enjoy stuttering in the cutscenes, and a settings screen that takes 5 seconds to load.
I’m not making that up, it takes 5 seconds to load the settings screen. The menu is instant, as it should be, the settings screen is 5 seconds. And Microsoft Studios/343 Industries actually optimized this.
Yes that’s right, this is the optimized version. It used to take about 12 seconds. It should have taken about 1 ms, assuming the data wasn’t already in memory. But someone looked at the settings menu taking roughly 12,000x longer than it should to open, and decided that it needed to be at least… 3x faster.
It is amazing to me how fast the computer age is ending due to absolutely atrocious software. And when you, or even serious programmers like Casey Muratori, point this out, a bunch of Reddit NPCs chime in with their regurgitated garbage about “premature optimization,” or praise Microsoft Teams for having an app that is a mere 100x slower than it ought to be, instead of 250x slower.
Indian techfarms and winner take all markets have been a disaster for humanity.