This has proven true for a while now. My favorite example is Slack. Slack is solid software, but why do we need upwards of 300MB of memory usage to send text and a couple images. I know why, but it does seem like an unreasonable usage. Here's the thing: I'd be okay with my "primary" software to be resource intensive. In my case, that's my IDE and the surrounding tools supporting it. I don't want my supporting softwar…
"Software is getting slower more rapidly than hardware becomes faster."
131–140 of 193 posts
Re: "Software is getting slower more rapidly than hardware becomes faster."
#132Earlier quoted context omitted.
I could use some tips on talking with IT about this as it cripples work performance
No, we won't make some special golden image for your machine. However we DONT want annoying "my computer slow" calls. So we can talk. But you need the antivirus and some kind of intune/rmm software, sorry.
Re: "Software is getting slower more rapidly than hardware becomes faster."
#133Earlier quoted context omitted.
I could use some tips on talking with IT about this as it cripples work performance
No, we won't make some special golden image for your machine. However we DONT want annoying "my computer slow" calls. So we can talk. But you need the antivirus and some kind of intune/rmm software, sorry.
Re: "Software is getting slower more rapidly than hardware becomes faster."
#134Re: "Software is getting slower more rapidly than hardware becomes faster."
#135Earlier quoted context omitted.
I use a reasonably beefy machine to develop “heavy” desktop software. It’s definitely the kind discussed in this article. I find it frustrating that it has noticeable input lag even with moderate workloads for exactly the reasons mentioned. But then you talk to end users and it turns out they work 80 hours on one big document with input lag of several seconds. Some actions can take 15 seconds. It’s mad. It’s larger t…
And this is exactly why you talk to users. You get the most unexpected feedback that you'd never have guessed in a million years.
Re: "Software is getting slower more rapidly than hardware becomes faster."
#136Earlier quoted context omitted.
And this is exactly why you talk to users. You get the most unexpected feedback that you'd never have guessed in a million years.
The problem is how we (devs) slowly but surely conditioned users (and even other, new coming devs) so that people don't even know how fast computers actually are and how crazy it is that those things are as slow as they are. So when it comes to performance, people don't even know that things could (should?) be exponentially faster.
The machine performs half of 12 boring jobs at the bank needed every month. But there is still another half dozen jobs the IBM still cannot do. It doesn't have the punch cards. So the roomful of smokers does the rest of the jobs in a couple of weeks, ready just in time to start over with next months tasks.
Should IBM make the machine or its programs twice as fast, or have twice as many features, even if the programs are half as fast? They should double the amount of features. And double it again, and again, and again...
Re: "Software is getting slower more rapidly than hardware becomes faster."
#137Earlier quoted context omitted.
The problem is how we (devs) slowly but surely conditioned users (and even other, new coming devs) so that people don't even know how fast computers actually are and how crazy it is that those things are as slow as they are. So when it comes to performance, people don't even know that things could (should?) be exponentially faster.
Imagine the first bank where a monthly job took a roomful of smoking people took four days complete with calculators. In comes IBM and says "we can sell you a machine that does this in five minutes". Sure it'll weigh a ton and cost a fortune, but you'll see it's worth it. So they buy it. The machine performs half of 12 boring jobs at the bank needed every month. But there is still another half dozen jobs the IBM stil…
But scale those "close to nothing" downsides times 7billion people, 100k seconds in a day, 365 days a week. And suddenly, the ammount of time and electricity alone wasted on something like, waitiing for windows explorer to start, adds to real world scales.
...But also, this implies that optimizing is inherently costly. Which is not always the case. Just the culutre of 'not caring' makes things go slower then they could, while still using the same high level languages etc.
Re: "Software is getting slower more rapidly than hardware becomes faster."
#138Earlier quoted context omitted.
No, we won't make some special golden image for your machine. However we DONT want annoying "my computer slow" calls. So we can talk. But you need the antivirus and some kind of intune/rmm software, sorry.
I get that, just sad npm becomes 100x slower (We measured this), and build times and indexing times increase so much too.
The company can live with your loss of productivity because it is living with the loss of everyone's productivity. The company cannot live without security.
On top of that, if you are the only one making noise about slow computers and complaining about stuff and things then you eventually end up being the problem. I mean, why is that lone employee complaining so hard about wanting to remove security assurances from his machine?
Re: "Software is getting slower more rapidly than hardware becomes faster."
#139I've been saying for a while now, that developers and their managers should use a low-spec machine, let's say the 5th-percentile of whatever their users are using in the field, at least one day a week. This might force some reprioritizing of performance and efficiency goals. As long as devs spend their days with bugattis while writing software for corollas, this will continue to get worse.
Slow laptops for developers test neither of those scenarios!
The solution is to use network emulators that can buffer packets and simulate latency. (Or just put servers in a remote cloud region instead of the local LAN.)
For databases, the trick is to give developers a slow database server with full-sized data. Don’t use empty databases (schema only) during development!
Re: "Software is getting slower more rapidly than hardware becomes faster."
#140Why am I doing all these interviews that grill me on big O(n) if they’re not even using it?!
* Application code is issuing too many queries to the database. The classic N+1 problem is of this type. Another common problem is issuing one query for each item in a set, when an aggregate query could be issued instead. For example, suppose we have a database that contains students and exams, and every time a student takes an exam, a row is added to the table student_exam with the student id and the exam id. Now suppose that we want to build a dashboard that lists each exam and the number of students that took each exam. We could do this by iterating through the exam ids and querying
SELECT COUNT(*) FROM student_exam WHERE exam_id = ?
where we fill in the exam id as a parameter. But it will be faster to query SELECT exam_id, COUNT(*) FROM student_exam GROUP BY exam_id
since this calculates the result in a single query.* Missing database indexes. A lot has been written about this, and it can cause a slowdown of N or N^2 times in some cases. Adding an index in the right place can change a linear scan into a much faster B-tree search.
* Too much overhead. If your request handler is performing a small number of operations, but they include slow operations like making API calls over the network, then your handler will be slow, and network problems could make it even slower. If you’re writing Java code that has to make calls ten levels deep to get anything done, those levels of indirection aren’t free.
* Using the wrong data structures, or using them suboptimally. If you want to determine whether two lists have an element in common, you could loop through both lists, but this will take O(mn) time. The faster way is to build a search structure out of one of the lists, then go through the other list and look for its elements in the search structure. For example, if your lists are A and B, you can build an AVL tree out of list A, call this tree T, then look for each element of B in T. This will run in O((m+n) log n) time. Using a hashtable works here too. Another common cause for slowdown is constructing a string by adding to its end repeatedly. This usually causes quadratic running time; it is better to build a list of strings and then concatenate them at the end.
In the abstract, these cases are the same as having a double loop in your code; the difference is that the double loop isn’t in your code, it’s in library code or in the database’s code. So you should avoid writing code that is slow like this, but you should also avoid calling code in a way that will cause slowdowns.
My third point is a little different from the rest; it’s not really talking about slowdowns by a factor of n, but by a large constant factor. When we’re talking about theory, we normally ignore the constant factors… but in the real world, those constants can matter a lot. This is why things like bitsets and B-trees are used. They only provide a constant factor improvement over regular sets and binary search trees respectively, but that constant factor sometimes matters a lot.