OK, guys. I dragged out ab, the Apache Benchmark tool, and ran it against three sets of code.
inline substitution,
<?
$str1 = "The quick brown fox";
$str2 = "jumped over";
$str3 = "the lazy dog's back";
for ($i=0; $i<1000; $i++)
print("$str1 $str2 $str3");
?>
printf
<?
$str1 = "The quick brown fox";
$str2 = "jumped over";
$str3 = "the lazy dog's back";
for ($i=0; $i<1000; $i++)
printf("%s %s %s", $str1, $str2, $str3);
?>
concatenation
<?
$str1 = "The quick brown fox";
$str2 = "jumped over";
$str3 = "the lazy dog's back";
for ($i=0; $i<1000; $i++)
print($str1 . " " . $str2 . " " . $str3);
?>
For each of these files, I ran 1,000 retrievals using ab's default settings, localhost (no Ethernet traffic contention). That's 10,000 invocations of each technique.
printf 47.830 seconds
inline 49.019 seconds
concat 42.126 seconds
I got similar results with multiple runs.
So, it's up to you whether you regard these differences as significant. I don't think it's worth worrying about, and I'll use the style that I find the to be the most legible and maintainable.