title: Should we still be optimizing "in the small"?
body: <p>I was changing my for loop to increment using <code>++i</code> instead of <code>i++</code> and got to thinking, is this really necessary anymore?  Surely today's compilers do this optimization on their own.  </p>
  
  <p>In this article, <a href="http://leto.net/docs/C-optimization.php" rel="noreferrer">http://leto.net/docs/C-optimization.php</a>, from 1997 Michael Lee goes into other optimizations such as inlining, loop unrolling, loop jamming, loop inversion, strength reduction, and many others.  Are these still relevant?</p>
  
  <p><strong>What low level code optimizations should we be doing, and what optimizations can we safely ignore?</strong></p>
  
  <p>Edit: This has nothing to do with premature optimization. <strong>The decision to optimize has already been made.</strong> Now the question is what is the most effective way to do it.</p>
  
  <p>anecdote: I once reviewed a requirements spec that stated: "The programmer shall left shift by one instead of multiplying by 2".</p>