18 ms·
Alternative hypothesis: (brace yourselves) people don't care enough. Any vendor will prioritize requirements, if performance is not in there, that CPU and memor
by klabb3 4y ago
Alternative hypothesis: (brace yourselves) people don't care enough. Any vendor will prioritize requirements, if performance is not in there, that CPU and memory is going to be used if in any way it helps the developers. Conversely, by looking at a system you can infer its requirements.
For commercial airplanes it may be safety first, ticket price second (passenger capacity, fuel efficiency) and speed third. For most software, functionality, signing up for a subscription, platform availability etc are usually prioritized higher than response times and keyboard shortcuts.
Game devs worry a lot about latency and frame rates and professional software care a lot about keyboard shortcuts. This proves (anecdotally) that performance isn't unacheivable at all, but rather deprioritized. Nobody wants slow apps but it's just that developer velocity, metrics, ads etc etc are higher priorities, and that comes with a cpu and memory cost that the vendor doesn't care about.
- GregorBrandt 4y agoPerformance should be part of the requirements!
- lazide 4y ago‘Should’ doesn’t pay the rent
- mbreese 4y agoIt is... fintech normally choses good and fast (in this case fast == fast execution, not necessarily quickly delivered). That is to say -- not cheap.
- teaearlgraycold 4y agoWhen your business is in the middle of financial transactions you have the privilege of picking fast, good, and expensive.
- klabb3 4y agoI agree. I'm claiming that most customers and/or decision makers do not. We should recognize that and focus on a solution instead of blaming engineers and local technical decision making. A first step is to avoid slow products, or influence those that buy products for us.
- edanm 4y agoNot in general, no. Performance is one thing that a user might care about, but there are dozens of others. Cost, how fast to build the software, etc. Telling users what they ought to want is not a very good idea.
- eru 4y agoNo, no, performance should be part of the requirements. Not in the sense that every project needs awesome performance. But in the sense that requirements should not what performance goals are required. So you should note down target throughput and latency for different scenarios in your requirements. That can be as simple as saying that any user interaction should give feedback within one second. (Be that either doing what the user requested within that one second, or giving some indication that the program is working on it.)
- edanm 4y agoYeah with that I agree, part of the requirements can definitely be what performance is required. The way that GP comment was written though made it sound like good performance should be part of the requirements for all software, which is what I disagree with.
- marginalia_nu 4y agoWhy would a user care about how fast it was to build the software?
- edanm 4y agoThat depends on the user. As Joel Spolsky famously said, there are different spheres of software. Things like Word or Windows, which are general purpose and go out to millions at once, are one kind. On the other hand, lots of software is custom-built for a specific end-user. E.g. an organization's internal tooling. There, you can often sacrifice a lot of things for it to be done faster, depending on the use case. In that case, I consider the user to be the "organization" or specific people/teams within that organization.
- dahfizz 4y ago> For most software, functionality, signing up for a subscription, platform availability etc are usually prioritized higher than response times and keyboard shortcuts. This is why I love working in fintech. The engineering is paramount. Customers will not accept slow or buggy software. I get to solve hard problems, and really build systems from the ground up. My managers understand that it is better to push back a deadline than to ship something that isn't up to standard.
- culi 4y agoThis has pretty much been the exact opposite of my experience in fintech. But it's a startup so maybe that's the difference
- quadcore 4y agoSounds like places Id love. May I ask what company youre working for?
- leidenfrost 4y agoNow I want to work in a fintech
- ncmncm 4y agoYes, but all in service of what amounts to automated stealing (cough) supplying liquidity. Better than adtech, anyway. Or nukes. Lots of things, really. (I would have said weapons, last year.) The only really defensible tech activity these days is things to help get off carbon-emitting processes. Making factories to make electrolysers. Making wind turbines better. Adapting airliners to carry liquid hydrogen in underwing nacelles. Making robots to put up solar fences on farms and pastures. Banking energy for nighttime without lithium. Making ammonia on tropical solar farms for export to high latitudes. It's even money whether we can get it done before civilization collapses. I guess we will need plenty of liquidity...
- kragen 4y agoThose are worthwhile problems to solve, but they seem well on their way to getting solved, though it's not guaranteed. Your civilization is collapsing because you're fighting each other, not because of climate change. Fighting each other is also why it's not guaranteed. Other problems are also worthwhile to solve. I agree that zero-sum HFT and negative-sum adtech and arms races are not the most prominent ones.
- PaulDavisThe1st 4y agoThe way that game developers get their performance is more or less orthogonal to the way many other applications are expected to function. It is impressive that they can draw so much stuff so fast, but there are actually very few objects on the screen that the user can directly interact with. A specific example: in a DAW, you might have tens or even hundreds of thousands of MIDI notes on the screen. These look like (typically) little rectangles which are precisely the short of thing that games can draw at unbelievable speed. But in a DAW (and most design / creation applications), every single one of them is potentially the site of user interaction with some backend model object. All those complex surfaces you see in contemporary games? Very nice. But the user cannot point at an arbitrary part of a rock wall and say "move this over a bit and make it bigger". Consequently, the entire way that you design and implement the GUI is different, and the lessons learned in one domain do not map very easily to the other.
- jayd16 4y agoWhat? What are you talking about? Games handle thousands of colliders and raycasts just fine. I thought you would mention that games get to use dedicated GPU hardware and apps might not be hardware accelerated but colliders? Very odd take.
- PaulDavisThe1st 4y agoYou've missed my point entirely. Games (generally speaking) do not involve allowing the user to interact in arbitrary user-defined ways with every object represented on the screen. The interactions that do happen are part of the physics engine not the "user clicked that and dragged it to the left" engine.
- jayd16 4y agoNo I think klabb3 has the right of it. They're really not that different and it does just boil down to priority and what is fine to be outsourced to a huge stack of slow libraries and what is prioritized as a core competency.
- 4y ago
- hackerlight 4y agoIsn't this thread full of evidence that people do care? Most of us, talking as end-users of software, seem to care. It's annoying when notepad.exe is slow.
- klabb3 4y agoMost people don't know what notepad.exe means. We're an extremely narrow set of people. Also, it's about caring enough to actually stop using it. Have you ever changed software to a competitor with better performance? I don't know if I have..
- barbariangrunge 4y agoI'm a game developer and game performance is better than ever. 144 Hz monitor? 4k? We got you covered. Even ray tracing and VR is on the way. Most games render frames of a 3D world in less than 17ms, but most websites take 3-7 seconds to load because of all the ads and bloat, and things shift around on you for another 20 seconds after that, so when you go to tap a link you accidentally tap an ad that finally loaded under your finger. If you optimize those websites, they run super fast though, but it's quite a pain to do with the dependency bloat in modern tech stacks... (note: games lag as well when you drag in a million dependencies you don't need) The thing is, most sites and web apps try to solve a user problem, and if you are the only company in town that solves that problem, then performance barely matters - what matters is solving the problem. The users will put up with some pain because the problem is even more painful. With games, it's all about the experience of interacting with the software - so performance is (hopefully, depending on your team and budget) amazing. That, and... performance tuning is hard work, and I think most people don't know much about it. It's a fractal rabbit hole. Cache misses, garbage collection, streaming, object pooling, dealing with stale pointers, etc. Even I have a ton to learn, and no matter how much I learn, I probably still will have a lot more to learn. It's easier for many teams to hand wave it I guess as long as they aren't losing too many customers because of it.
- dbttdft 4y ago> I'm a game developer and game performance is better than ever. I'm a game developer (and player) and I strongly disagree. What game can even do P95 144FPS on affordable hardware? On lowest graphics, with populated lobbies (there also can't be a that ONE map where this all goes to shit). And are we talking about AAA games or not? Because non-AAA means a minecraft knockoff cannot meet 60FPS.
- bradgessler 4y agoWebsites can def be fast, but to your point it’s a priority problem. This comparison I made at https://legiblenews.com/speed https://legiblenews.com/speed that got upvoted here a while back shows just that—most news websites care about ads first before their users speed experience. Only Legible News, USA Today, and Financial Times have a reasonable speed score, which is kind of depressing.
- legulere 4y agoI guess it’s more that what is developed is lead by product people and those don’t know how to plan for performance issues and instead inadvertently push for more features in a shorter time.
- bryanrasmussen 4y agoI guess, but there does seem to be a lot of things companies don't actually care about - performance, security, documentation.. there seems to be a real list of things that regularly show up with people complaining about it and the answer is nobody cares about that stuff. That said I did work at a major media company and the performance sucked (in the help section) and I said I want to improve it and the PM said "nobody cares" but I think she meant the business didn't care. So there is one anecdote supporting your claim!
- tomjen3 4y agoI think you are very right about it, but for certain things speed needs to be a requirement. I have tried both Evernote and notion plus onenote. They are all much more powerful than Apple notes but they are so slow by the time they are ready for my input I have forgotten what I was trying to note down.
- klabb3 4y agoWe do live in this paradigm of everything being in the cloud and clients are stupid and constantly need to sync, often times in a "stop the world" fashion. Last time I used Twitter web I saw three spinners in the same screen. So that's a big factor as well. It's incredibly poor engineering culture imo, but again those are there because that's what they wanted to build.
- tomjen3 4y agoYeah but that’s twitter so it doesn’t matter, you just open it as needed. Evernote works offline and is an actual tool, so there is no reason it’s so slow
- deleted 4y ago[deleted]
- KronisLV 4y ago> This proves (anecdotally) that performance isn't unacheivable at all, but rather deprioritized. Nobody wants slow apps but it's just that developer velocity, metrics, ads etc etc are higher priorities, and that comes with a cpu and memory cost that the vendor doesn't care about. I saw a project that had a very clear N+1 problem in its database queries and yet nobody seemed to care, because they liked doing nested service calls, instead of writing more complicated SQL queries for fetching the data (or even using views, to abstract the complexity away from the app) and the performance was "good enough". Then end result was that an application page that should have taken less than 1 second to load now took around 7-8 because of hundreds if not thousands of DB calls to populate a few tables. Because it was a mostly internal application, that was deemed good enough. Only when those times hit around 20-30 seconds, I was called in to help. At that point rewriting dozens of related service calls was no longer viable (in the time frame that a fix was expected in), so I could "fix" the problem with in memory caching because about 70% of the DB calls requested the very same data, just in different nested loop iterations. Of course, this fix was subjectively bad, given the cache invalidation problems that it brought (or at least would bring in the future if the data would ever change during cache lifetime). What's even more "fun" was the fact that the DB wasn't usable through a remote connection (say, using a VPN during COVID) because of all the calls - imagine waiting for a 1000 DB calls to complete sequentially, with the full network round trip between those. And of course, launching a local database wasn't in the plans, so me undertaking that initiative also needed days of work (versus something more convenient like MySQL/MariaDB/PostgreSQL being used, which would have made it a job for a few hours, no more; as opposed to the "enterprise" database). In my eyes, it's all about caring about software development: either you do, or you don't. Sometimes you're paid to care, other times everyone assumes that things are "good enough" without paying attention to performance, testing, readability, documentation, discoverability etc. I'm pretty sure that as long as you're allowed to ship mediocre software, exactly that will be done.
- codebolt 4y ago> In my eyes, it's all about caring about software development: either you do, or you don't. Yes, that's the difference. I'm lucky enough to work mostly with colleagues that share a certain level of craftsmanship about the software we ship. We all care about the quality of the product, although we may not always agree on what an ideal solution should look like.
- overgard 4y agoI think people care but there are no alternatives. My 3 month old Windows 11 machine with a Ryzen 5700 and an RTX 3080 regularly starts chugging on stupid things like moving a window, chrome will randomly just peg a cpu with some sort of "report" process, and visual studio locks up when the laptop awakes from sleeping. Id drop it in a second but for what? Mac sucks for game development, has the same issues with too many weird background processes, and linux distros never seem to work on laptops well, even ones designed for it (system 76 for instance). The aren't real alternatives.
- LtWorf 4y agoBy people I think he meant "product managers", not users.
- mft_ 4y ago(I know that this is not the ideal solution, but) I had sucesss by installing a trimmed-down 'gamer' version of Windows 11 on a similarly high-specced PC, and it's still blazingly fast nearly a year later. (If you go this route, you've got to be careful what's been trimmeed, mind, if you want to use it for general purposes - mine doesn't have WSL and seems to have damaged printing support, which is obviously suboptimal depending on your needs.)
- overgard 4y agoHow does one find such an edition?
- nyanpasu64 4y agoAmeliorated Windows 10 is one "distro" I use and (blindly) trust. It lacks store app support (not a problem), .appx package support (annoying when you want Windows Terminal), creating new user accounts (unacceptable on any machine used by multiple people), and has questionable "security" decisions by default like requiring a separate admin password for elevation, disabling VBS scripts, and an ugly logon screen wallpaper that requires downloading and blindly trusting a PowerShell script from the Internet to change (https://git.ameliorated.info/Joe/amecs https://git.ameliorated.info/Joe/amecs). Frankly... if you're using it for situations that need security, you're better off running the (documented) amelioration steps yourself than downloading shady ISOs and wallpaper changers from online.
- _Algernon_ 4y agoBad alternative hypothesis. The implemented approach with recursive search is more complicated than just enumerating the files in the Sound recordings directory. A singular focus on requirements would have resulted in the easy solution that's also more efficient. This is sheer stupidity: a more complicated, less efficient solution to a simple problem.
- eru 4y agoWhy is it more complicated? They presumably wanted to recursively enumerate all the files under the Sound recordings directory? (In any case, for the application programmer the difference between recursive enumeration of files vs only what directly in a specific directly is likely only one flag or so.)
- temphypercube 4y ago
- scaredginger 4y agoI'd say it's also instructive to consider different aspects of performance. For example, many games start up unnecessarily slowly because nobody bothered to optimise it. Users will load the game, then spend a fair while playing it, so the slow startup time doesn't hugely impact their experience. Hence, improving frame rate is a much better investment
- apatheticonion 4y agoThis is why I think it's so important that tool makers take the responsibility of performance seriously. My old company used a proprietary VPN software (Appgate SPD) that used an electron front end - why? Well the front end could be reused on Windows, Linux and MacOS. Fair enough but it was very bloated and lacked features. Compound that to half a dozen electron apps and suddenly my laptop battery dies in half the time. We can't guarantee or mandate that every project will be written in Rust, multiple times for every platform using their native APIs - so it's on the tool makers to bridge that gap. Electron shows that we need a robust, efficient, cross-platform, cross-language GUI API. Would be nice to be able to use Go, Rust, Python, JavaScript or whatever and interact with an GUI interpreter that translates a familiar API to native widgets.
- nirui 4y agoGTK can run on Windows, Linux and Mac. It's open source (LGPL), fast enough and the ecosystem is fine. QT is another one. The truth is, Electron is easy to use, quick to hire and cheap to build on, that makes it the best choice for many companies, even when the user might (highly-likely) hate it.
- LoganDark 4y agoExcept GTK looks like shit on Windows and Mac, so nobody wants to use it for those platforms. Most developers that create software with these bloat issues would not accept GTK.
- brador 4y agoPeople do care, just everything is silod and monopolised/duopolies with no where else to go. We’re stuck and getting stucker.
- jeffrallen 4y agoThis brings to mind Leonard's law, which is that software will be as bad as it's users can tolerate.
- joshspankit 4y agoAs well: Companies pay more for dev time than they ever have in the past. There are tonnes of stories of companies buying devs the best hardware so that they can program more effectively, and of course devs with the best hardware don’t even see a lot of performance issues. Then on top of that, companies are making choices like “we could optimize X and Y, but that would take too much dev time. Let’s just (compromise somewhere/bump up the requirements)”
- marginalia_nu 4y ago> Alternative hypothesis: (brace yourselves) people don't care enough. Any vendor will prioritize requirements, if performance is not in there, that CPU and memory is going to be used if in any way it helps the developers. Conversely, by looking at a system you can infer its requirements. I think most of all, it isn't sufficiently visible. Most development is done on high powered hardware that makes slow code very difficult to distinguish from fast code, even though you can often get 10x performance improvements without sacrificing readability or development effort. Individually it's just a millisecond wasted here and there, but all these small inefficiencies add up across the execution path. Here's a fun benchmark to illustrate how incomplete beliefs like "compilers are smart enough to magically make this not matter" can be: https://memex.marginalia.nu//junk/DedupTest.gmi https://memex.marginalia.nu//junk/DedupTest.gmi It's a 50x difference between the common idiomatic approach and the somewhat optimized greybeard solution, with a wide spectrum of both readability and performance in-between. If you put zero thought toward this, your modern code will make your modern computer run as though it was a computer from the late '90s.
- nyanpasu64 4y agoFrankly I'm shocked that deduplicateTree is two orders of magnitude slower than deduplicateGreybeard, despite having asymptotically better-or-equal performance (TreeSet runtime is O(output log output), whereas sorting an array is O(input log input)). I'd say that perhaps boxing the integers is slowing the algorithm down, but deduplicateGreybeardCollections has only a <3x performance hit rather than >100x. Is the problem due to allocating large amounts of internal memory and branching heavily (binary trees as opposed to B-trees), or less predictable/vectorizable code execution than array traversal, or virtual comparison dispatch slower than `items.sort(Comparator.naturalOrder())`, or some TreeSet-specific slowdown?
- marginalia_nu 4y agoVery good question. I'm away from my work station so I can't do additional profiling, but my overall experience is that TreeSet is hella slow in almost every case. My hunch is that the extreme indirection makes mince out of data locality during traversal, since TreeSet is backed by a red black tree, so conversion to list is O(n) cache misses, whereas the sorting algorithms are reasonably well behaved from a cache perspective (Java uses a dual pivot quicksort for primitives and TimSort for objects IIRC).
- hahamrfunnyguy 4y agoTrue. I don't think users care either. Typically I get lambasted when I bring up performance issues on vendor or user group forums. Visual Studio and Adobe Creative Suite are examples of the two most egregious offenders. They're both awfully slow and Creative Suite is extremely buggy as well. Visual Studio is nearly 30 years old, and Photoshop is even older. That's a lot of features to have to carry forward over the years. It would be neat if during setup, they tried to figure out what your goals were as a user and turned stuff off you didn't need. My pet peeve about Visual Studio is whenever I upgrade to a new version, my default setting overrides are not carried over.
- sershe 4y agoOne of the reasons users don't care is that they have no expectations of quality. It's painful to watch non-tech people use software written by incompetent developers, like Teams. You'd literally see someone type, then Teams UI would hand. They would pause typing and patiently stare, hands on keyboard. UI would unfreeze 3 seconds later, they'd keep typing. To me this is insane, but people are used to it / have been trained to expect it and consider it normal, apparently. Just like (a somewhat more reasonable) expectation that things need to be restarted in an escalating sequence if something is not working. If I could go back in time and make one change to the history of computing, I'd add code to every consumer-facing GUI OS that would kill-dash-nine any application blocking UI thread for more than say 200ms. And somehow make it illegal to override for any consumer software, or if I were God make it so any developer trying to override it to let their software be slow gets a brain aneurysm rendering them (even more) incapable of writing software and has to find work digging ditches.