One of the main problems with performance-enhancing techniques is that they typically make a system more complicated. This can make a system harder to modify and it may also reduce your productivity. Therefore, although your system runs faster, your development is now slower.
We commonly find this complexity problem in enterprise software, although usually for different reasons. Typically, many unnecessary layers of abstraction are used, supposedly to keep the software flexible. Ironically, this actually makes it slower to add new features. This may seem counter-intuitive until you realize that simplicity makes change easier.
Note
There's a satirical enterprise edition of the popular programmer interview coding test FizzBuzz, which is available on GitHub (via the short URL http://www.fizzbuzz.enterprises/). It's a good inspiration for how to not do things.
If you don't need a feature yet, then it's often best to leave it out rather than building it just in case you might...