|
|
|
|
|
by dataflow
1914 days ago
|
|
Interesting, I guess it depends on your application. :-) You made me go back and double-check this on an actual program I had; here's what it is as a comparison point: So I have an application in front of me right now that I've already optimized the heck out of (and it's as close to single-pass as can be), and turning off optimizations in release mode makes a basic 0.27-second task take 2.4 seconds... almost an order of magnitude difference. And when I try to break into the code to see where it stops, it's almost always within traditionally-very-cheap operations like std::vector::emplace_back 1 std::vector::emplace_back
2 std::vector::_Emplace_back_with_unused_capacity
3 std::_Default_allocator_traits::construct
4 T::T
5 U::V::w
and std::lower_bound 1 std::lower_bound
2 std::lower_bound
3 std::_Seek_wrapped
4 std::_Vector_const_iterator::_Seek_to
which have suddenly become incredibly expensive due to lack of optimizations like inlining. And notice this is all in the standard library, not within my own (template-light) code.Going from 0.27 seconds (near-instantaneous for the user) to 2.4 seconds (a huge lag) is enough to make the program incredibly frustrating. Whether it's still "usable" at that point I guess is a matter of debate (some devs just put up with any amount of lag you throw at them!), but I feel pretty safe in saying the task I'm trying to accomplish simply would not be possible without optimizations. So I'm guessing your performance targets & constraints are quite different, and that's probably why this isn't such a big deal in your case. |
|