Don&#x27;t use abstractions.. unless they&#x27;re high enough that the compiler or runtime can optimize their implementation better and faster than you could - and the compiler&#x2F;runtime environment actually does this (naturally C++ doesn&#x27;t and can&#x27;t).<p>Higher level abstractions aren&#x27;t <i>necessarily</i> the enemy of optimal code.  Modern tracing jitted JS runtimes are great examples of how higher level code can be transformed under the hood by an intelligent compiler into more efficient concrete code at compile&#x2F;runtime.  The problem with C++ isn&#x27;t that it exposes abstractions, it&#x27;s that there is no way to make the abstractions responsive to where&#x2F;how they are used, no simple automated way to optimize by use case, and there is no reliable tooling that exposes the cost of abstractions during development thus concealing their potential costs.<p>That being said.. abstractions are probably the greatest single potential untapped source of massive performance gains as it allows performance optimizations to be automated by machine learning and runtime performance analysis.