Hacker News new | past | comments | ask | show | jobs | submit login

Using (5 << 20) instead of (5 * 1024 * 1024) is premature optimization. Modern C compilers will take the expression (5 * 1024 * 1024) and turn it into the combination of shifts and additions that are appropriate for your architecture.

And I definitely prefer defined constants for two reasons. One, it's likely you'll have to declare multiple such buffers in different places. Two, if I want to tune the parameter, I'd rather do it at the top of a source file with other such defined constants than hunting for the declaration in the code. I do agree that sizeof() is preferable when it's an option.




I don't think he meant it as an optimization. It's easy to understand as 5 * 2^20, and quicker to type.


I much prefer 5 * 1024 * 1024. I have to stop and do some reasoning with 5 << 20.


Correct, to me it's idiomatic. I realize it's not for everyone, so the ultimate best code is probably the way it was written ... On the other hand, sometimes it's fun to push the envelope just a tiny bit, and hope that readers will actually learn something from the code. But that's a thin edge to be balancing on.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: