TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Reflections on Software Performance

154 pointsby cespareabout 5 years ago

10 comments

tluyben2about 5 years ago
&gt; It seems increasingly common these days to not worry about performance at all,<p>You don&#x27;t even have to continue there. People, who should know better, assume that &#x27;modern cloud stuff&#x27; will make this trivial. You just add some auto-scaling and it can handle anything. Until it grinds to a halt because it cannot scale beyond bottlenecks (relational database most likely) or the credit card is empty trying to pull in more resources beyond the ridiculous amount that were already being used for the (relatively) tiny amount of users.<p>This will only get worse as people generally use the &#x27;premature optimization&#x27; (delivering software for launch is not premature!) and &#x27;people are more expensive than more servers&#x27; (no they are not with some actual traffic and O(n^2) performing crap) as excuse to not even try to understand this anymore. Same with storage space; with NoSQL, there are terabytes of data growing out of nowhere because &#x27;we don&#x27;t care as it works and it&#x27;s &#x27;fast&#x27; to market, again &#x27;programmers are more expensive than more hardware!&#x27;). Just run a script to fire up 500 aws instances backed by Dynamo and fall asleep.<p>I am not so worried about premature optimization ; I am more worried about never optimization. And at that; i&#x27;m really worried about my (mostly younger) colleagues simply not caring because they believe it&#x27;s a waste of time.
评论 #22406553 未加载
评论 #22405344 未加载
评论 #22406248 未加载
branko_dabout 5 years ago
Yes, performance is a feature.<p>You have to plan and architecture for it, and you can&#x27;t just tack it on after the fact by profiling a few hot codepaths (though you should do that too).<p>Performance can be different from &quot;scalability&quot; though. Sometimes, there is tension between the two.
评论 #22403374 未加载
评论 #22403486 未加载
评论 #22404533 未加载
评论 #22404066 未加载
simonwabout 5 years ago
This piece is excellent. I really love how it challenges the &quot;optimize last&quot; philosophy by pointing out that performance is integral to how a tool will be used and designing it in as part of the architecture from the very start can produce a fundamentally different product, even if it appears to have the same features.
评论 #22404520 未加载
bcrosby95about 5 years ago
I&#x27;ve heard that performance is a feature but I feel like that understates the effort involved in seeking performance for a piece of software.<p>If you want to call it a feature, its closer to N features: 1 for each feature you have. If you have 10 features, and add performance, the effort involved isn&#x27;t like having 11 features. It&#x27;s like having 20 features. The effect is multiplicative.<p>This is because performance is a cross cutting concern. Many times cross cutting concerns are easy to inject&#x2F;share effort with. But not with performance. You can&#x27;t just add an @OptimizeThis annotation to speed up your code. Performance tuning tends to be very specific to each chunk of code.
评论 #22405922 未加载
luordabout 5 years ago
&gt; And while the SQLite developers were able to do this work after the fact, the more 1% regressions you can avoid in the first place, the easier this work is.<p>That mention of regressions seems, IMO, a slightly out of left field attempt at dismissing how the SQLite example shows that you can, in fact, &quot;make it fast&quot; <i>later</i>. Maybe he should&#x27;ve a picked a different example entirely because it undermined his point a little bit.[1]<p>All in all, his entire thesis comes from talking about a typechecker, which is indeed a piece of software whose each component in general contributes to the performance of the whole. It isn&#x27;t a set of disparage moving parts (at least, from what I remember of my time studying parsers in college), so it&#x27;s very hard to optimize by sections because all components mostly feed off each other. Most software is <i>not</i> a typechecking tool, plenty (dare I say, most) of software does have specific bottlenecks.<p>Though I do agree that, even if we aren&#x27;t focusing on it <i>right away</i>, we should keep performance in mind from the beginning. If nothing else, making the application&#x2F;system as modular as possible, so as to make it easier to replace the slowest moving parts.<p>[1] Which is a good thing IMO, as it highlights how this is all about trade-offs. &quot;Premature optimization is the root of all evil&quot;, &quot;CPU time is always cheaper than an engineer’s time&quot;, etc., are, in fact, mostly true, at least when talking about consumer software&#x2F;saas: it really doesn&#x27;t matter how fast your application is because crafting fast software is slower than crafting slow software, and your very performant tool is not used by anyone because everyone is already using that other tool that is slower but came out first.
magicalhippoabout 5 years ago
&gt; What is perhaps less apparent is that having faster tools changes how users use a tool or perform a task.<p>Important here is that for a user, &quot;faster&quot; means with respect to achieving the goal.<p>At work we&#x27;ve created a module where, instead of punching line items by hand and augmenting the data by memory or web searches, the user can paste data from Excel (or import from OCR) and the system remembers mappings for the data augmentation.<p>After a couple of initial runs for the mapping table to build our users can process thousands of lines in 10 minutes or less, a task that could take the better part of a day.<p>It&#x27;s not uncommon with some follow-up support after new customers start with this module, so I often get to follow the transformation from before to after.<p>They also quickly get accustomed. We&#x27;ll hear it quick if those 10 minutes grows to 20 from one build to another, not much thought is given to how 20 minutes is still a lot faster than they&#x27;d be able to punch those 8000 lines :)
kenabout 5 years ago
&gt; the SQLite 3.8.7 release, which was 50% faster than the previous release<p>Nit: the link says it’s 10% faster than the previous release. It’s 50% faster than some arbitrary point in the past, perhaps the time when they began their CPU-based profile optimization.
alexeizabout 5 years ago
Nice and clean static layout. A rarity these days when blog post web pages tend to be overloaded with headers, footers, and various crappy interactive elements.
igouyabout 5 years ago
&gt; I’ve really strongly come to believe that…<p>I’ve come to believe really strongly that…
PouyaLabout 5 years ago
Great stuff. We need to work on the fact at the moment, though that happens at time goes by.