| ▲ | Push ifs up and fors down: The idiom, its algebra, and its limits(debasishg.github.io) | |||||||||||||||||||||||||||||||
| 53 points by speckx 3 hours ago | 15 comments | ||||||||||||||||||||||||||||||||
| ▲ | socializer 2 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||
I am continually impressed by the ability of LLMs to take trivial ideas and turn them into lengthy and obtuse blog posts with unnecessary analogies. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | ninalanyon an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
I've done this for years. Not every time of course but where it makes the code easier to understand and maintain. Speed was almost never the reason. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | wallstop an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
What is missing here is any benchmarks backing up this argument for code structure. Of note, as of C#9 (and maybe prior), the dotnet runtime does this automatically whenever it is deemed safe. https://devblogs.microsoft.com/dotnet/performance-improvemen... The same technique is applied as an optimization, when deemed safe, in all current gen c compilers (gcc, llvm, etc). I'm very confused why neither measurements nor references to when this is done automatically in most modern languages is included in the article. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | dieselgate 19 minutes ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
Didn’t see it mentioned in the article but isn’t leading with if-statement called a “guard clause”. I like that pattern but it’s just general best practice I thought. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | aappleby an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
I have always phrased this as "Never do one of something". | ||||||||||||||||||||||||||||||||
| ▲ | OutOfHere 37 minutes ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
I like it, but to do fizzbuzz in this way, you'd have to separate what's inside the loop into a reused function. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | alterom 38 minutes ago | parent | prev [-] | |||||||||||||||||||||||||||||||
TL;DR in one sentence: "the loop runs without a branch, and is a candidate for vectorization". That's it, that's the article. This matters a lot in huge-scale / scientific computing / HPF, where if you can express something as an operation on vectors on matrices, you win big (those ops parallelize well, can be run on GPUs, clusters, what have you). | ||||||||||||||||||||||||||||||||