[PHP-users 8972] Re: パースの際の改行の扱い
桝形 誠二
php-users@php.gr.jp
Fri, 26 Jul 2002 15:04:22 +0900
こんにちわ、桝形です。
> 蛇足ですが、どうしてPHPでは普通のHTML部分をif条件/ループで
> 囲んで出力が制御できるのか不思議に思っている方もいらっしゃる
> のでは?
>
> これは
>
> <?php if ($condition) { ?>
> <tr><td>SOMETHING HERE</td></tr>
> <?php } else { ?>
> <tr><td>ANYTHING HERE</td></tr>
> <?php } ?>
>
> が
>
> <?php
> if ($condition) {
> echo '<tr><td>SOMETHING HERE</td></tr>\n';
> } else {
> echo '<tr><td>ANYTHING HERE</td></tr>\n';
> }
> ?>
>
> と同じだからです。
なるほど〜、これは非常に為になりました。
上記の事を考えると、下記の様なスクリプトでは1より2の方が
遅そうに思えましたが、テストしてみると1の方が遅かったです。
テストした環境。
--------------------------
OS : RedHat Linux6.2J
Apache : 1.3.26
PHP : 4.2.2(国際化)
--------------------------
Test1.php:
----------------------------------------------------------------
<?
echo "<HTML>\n";
echo "<HEAD></HEAD>\n";
echo "<BODY>\n";
for( $XX = 0; $XX < 50000; ++$XX )
{
echo "<B><FONT COLOR=\"black\">Test[".$XX."]</FONT></B><BR>\n";
}
echo "</BODY>\n";
echo "</HTML>\n";
?>
----------------------------------------------------------------
Test2.php:
----------------------------------------------------------------
<HTML>
<HEAD></HEAD>
<BODY>
<? for( $XX = 0; $XX < 50000; ++$XX ) ?>
<B><FONT COLOR="black">Test[<? echo $XX; ?>]</FONT></B><BR>
<? endfor; ?>
</BODY>
</HTML>
----------------------------------------------------------------
理由は分離している分、解釈する必要があるのかなぁ?と
思っていたのですがどうやら考え方が違っているようです。
Apacheに付属しているabで試してみたところ、
[masugata@uranus bin]$ cd /usr/local/apache/bin
[masugata@uranus bin]$ ./ab -n10 -c1 http://イントラドメイン/Test1.php
This is ApacheBench, Version 1.3d <$Revision: 1.65 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking イントラドメイン (be patient).....done
Server Software: Apache/1.3.26
Server Hostname: イントラドメイン
Server Port: 80
Document Path: /Test1.php
Document Length: 2488934 bytes
Concurrency Level: 1
Time taken for tests: 14.612 seconds
Complete requests: 10
Failed requests: 0
Broken pipe errors: 0
Total transferred: 24892290 bytes
HTML transferred: 24889340 bytes
Requests per second: 0.68 [#/sec] (mean)
Time per request: 1461.20 [ms] (mean)
Time per request: 1461.20 [ms] (mean, across all concurrent requests)
Transfer rate: 1703.55 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 1451 1461 6.9 1462 1475
Waiting: 1068 1305 165.2 1451 1465
Total: 1451 1461 6.9 1462 1475
Percentage of the requests served within a certain time (ms)
50% 1462
66% 1464
75% 1464
80% 1465
90% 1475
95% 1475
98% 1475
99% 1475
100% 1475 (last request)
[masugata@uranus bin]$ ./ab -n10 -c1 http://イントラドメイン/Test2.php
This is ApacheBench, Version 1.3d <$Revision: 1.65 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking イントラドメイン (be patient).....done
Server Software: Apache/1.3.26
Server Hostname: イントラドメイン
Server Port: 80
Document Path: /Test2.php
Document Length: 2488934 bytes
Concurrency Level: 1
Time taken for tests: 13.757 seconds
Complete requests: 10
Failed requests: 0
Broken pipe errors: 0
Total transferred: 24892290 bytes
HTML transferred: 24889340 bytes
Requests per second: 0.73 [#/sec] (mean)
Time per request: 1375.70 [ms] (mean)
Time per request: 1375.70 [ms] (mean, across all concurrent requests)
Transfer rate: 1809.43 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 1360 1376 13.8 1373 1402
Waiting: 962 1187 157.9 1276 1369
Total: 1360 1376 13.8 1373 1402
Percentage of the requests served within a certain time (ms)
50% 1373
66% 1374
75% 1379
80% 1399
90% 1402
95% 1402
98% 1402
99% 1402
100% 1402 (last request)
と、わずかながらですが。(^^;
プログラム内部で最初と最後にマイクロ秒単位で記録しておいて
どれくらいかかったかを計測しても1と2では約一秒くらいの差が
あり、abと結果はほとんど変わりませんでした。
このからくりはどうなっているのでしょうか?
識者の方、ご教授願います。m(_ _)m
_______________________
桝形 誠二( Masugata Seiji )
E-Mail : s.masugata@digicom.dnp.co.jp
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄