this post was submitted on 26 Apr 2025
48 points (98.0% liked)

Programming

19911 readers
123 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
48
O(no) You Didn’t (mrshiny608.github.io)
submitted 5 days ago by tyler to c/programming
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 5 points 4 days ago (1 children)

These are fun rabbit holes to go down. Everything here is true, of course: Big-O complexity isn't everything, context always matters, and measurements trump guesses.

But also, how many times have you encountered a performance problem with a slow O(n) solution that you solved by turning it into a fast O(n²) solution, compared to the other way around? The difference between 721ns and 72.1ns is almost always irrelevant (and is irrelevant if it's not on a hot path), and in all likelihood, the same can be said at n=500 (even 500x these numbers still doesn't even reach 0.5ms).

So unless context tells me that I have a good reason to think otherwise, I'm writing the one that uses a hash-based collection. As the codebase evolves in the future and the same bits of code are used in novel situations, I am much less likely to regret leaving microseconds on the table at small input sizes than to regret leaving milliseconds or seconds on the table at large input sizes.

As a trained practicioner of "the deeper magics" myself, I feel the need to point out that there's a reason why we call these types of things "the deeper magics", and that's because heuristics like "better Big-O means better performance" generally point you in the right direction when it matters, and the wrong direction when it doesn't matter.

[–] tyler 3 points 4 days ago

Only once in my whole career have I ever needed to worry about the performance of a loop in big o terms. I think it was about 7 years ago.