[PHP-users 8984] Re: パースの際の改行の扱い

HAMAI Kyoichi php-users@php.gr.jp
Fri, 26 Jul 2002 18:22:34 +0900


濱井です。識者ではありませんが。
2002/07/26 17:12:33 +0900にs.masugata@digicom.dnp.co.jpさんが送られた
メールに関する返信です。

>同じ処理と見たてるオーバーヘッドよりも、総合的には出力する
>( echoする回数 )オーバーヘッドの方が大きいという事なので
>しょうかねぇ。。。

これは、むしろ逆でしょう。
原因は、1の方が文字列を連結するために、一時的に確保された領域への
コピーが生じ、その分だけ遅くなるからだと思います。

1の。

 echo "<B><FONT COLOR=\"black\">Test[".$XX."]</FONT></B><BR>\n";

では、"<B><FONT COLOR=\"black\">Test[".$XX."]</FONT></B><BR>\n"が一度
だけechoで出力されるのに対し。
2の。

<B><FONT COLOR="black">Test[<? echo $XX; ?>]</FONT></B><BR>

では、"<B><FONT COLOR="black">Test["と"$XX"と"]</FONT></B><BR>"との
3回、出力することになるはずです。


多分、echo等は出力用のバッファにコピーしているだけで、実際には
出力していないのだと思います。
# そう考えないとContent-Lengthヘッダが設定できない。

2では、出力用のバッファ上で、"<B><FONT COLOR="black">Test["と"$XX"と
"]</FONT></B><BR>"とが連結されるのに対し、1では、
"<B><FONT COLOR="black">Test["と"$XX"と"]</FONT></B><BR>"とが一時的に
確保された領域上で一旦連結されてから、出力用のバッファへコピーされる
ことになります。
一時的に確保された領域へのコピーの分だけ余計な手間がかかるはずです。