The performance cost is crazy when format string is parsed at runtime.<p>Implementing all that subtle functionality correctly takes up a lot of CPU time.<p>According to my quick test, on Visual Studio 2012, even simplest sprintf with just one parameter seemed to take about 1 <i>microsecond</i> to execute.<p>Of course clang and gcc seem to sometimes compile whole format parser away. At least...<p><pre><code>  printf (&quot;Hello World!\n&quot;);
</code></pre>
... is optimized into a simple &quot;puts(&quot;Hello World!&quot;);&quot;.<p>Of course iostream &lt;&lt; operator runtime performance is also pretty horrible. Each &lt;&lt; invocation seem to call streambuf::sputn (or sputc) <i>separately</i>. On VS2012, simplest stringstream test...<p><pre><code>  ss &lt;&lt; &quot;value: &quot; &lt;&lt; intVal &lt;&lt; endl;
</code></pre>
... outputting one variable into it and turning the result into a std::string took about 3 microseconds. (Although it was a very quick test, a number of things might be suboptimal in the test code.)