PHPでechoを使って複数行に渡るhtmlソースを出力する時に、echoのつけ方はどれが一番速いのか?を検証してみました。

どゆこと?というのを具体的に説明しますと、今回は以下のコードたちを比較していきます。

//" "で丸ごと囲む
echo "<li>
        <p>
          hello, world!
        </p>
    </li>";

//.で繋ぐ
echo "<li>"
      ."<p>"
        ."hello, world!"
      ."</p>"
    ."<li>";

//全行echoする
echo "<li>";
  echo "<p>";
    echo "hello, world!";
  echo "</p>";
echo "</li>";

//そもそも改行しない
echo "<li><p>Hello, World!</p></li>";

可読性のためにechoの中でも改行したい派の人が他にどれくらいいるのか分かりませんが...。

とりあえず、やっていきましょう!

目次

検証環境と計測方法

どんな環境・どんなコードを使って検証していくのかを先にご紹介しておきます。

検証環境

  • PHPコードの実行は「Local by Flywheel」で構築した ローカル環境 にて行っています。
  • PCはMacBook Proで検証しました。以下スペックです。
  • OS:macOS High Sierra
  • CPU:Intel Core i7
  • メモリ:16 GB
  • ブラウザは Google Chrom (バージョン: 66.0.3359.181) を使用。
  • その他、起動アプリケーションの数などは全て同じ状態で行なっています。

計測方法

以下のコードを記述したphpファイルをブラウザで確認し、表示された計測時間をメモしています。

<ul style="display:none">
<?php
    define('DO_COUNT',1000);       //実行回数
    define('TEST_COUNT',100);      //計測回数
    define('DECIMAL_DIGITS',10);   //小数点桁数
    $all_time = 0.0;               //全体の計測時間

    for($i = 0; $i < TEST_COUNT; $i++) {

        $start = microtime(true);
        for($j = 0; $j < DO_COUNT; $j++) {

            echo "...";    //ここを、それぞれのパターンに変えていきます。

        }
        $end = microtime(true);

        $test_time = $end - $start;
        $all_time += $test_time;
    }

    $average = number_format($all_time / TEST_COUNT, DECIMAL_DIGITS);
?>
</ul>
<div><?=$average?>秒</div>

このコードの詳細については、下記を参考にしてください。

PHPで速度比較をしたい時に便利な、実行速度計測コードPHPで速度比較をしたい時に便利な、実行速度計測コード

今回はDO_COUNTの数を元コードより一桁少なくしています。(ブラウザの更新が遅すぎたので)

また、ブラウザでの表示がスムーズになるよう、echoで出力する内容はdisplay:noneを付与したulタグで囲み、非表示にしています。

計測結果

では、計測結果を見てみましょう。それぞれ計測コードを3回ずつ実行させました。(ブラウザを3回ずつ更新)

""で丸ごと囲むパターン

このコードの話

echo "<li>
        <p>
          hello, world!
        </p>
    </li>";
  • 0.0010334396秒
  • 0.0010587049秒
  • 0.0010703158秒

「.」で繋ぐパターン

このコードの話

echo "<li>"
        ."<p>"
          ."hello, world!"
        ."</p>"
    ."</li>";
  • 0.0003500748秒
  • 0.0003755260秒
  • 0.0003085589秒

全行にechoをつけるパターン

このコードの話

echo "<li>"
  echo "<p>"
    echo "hello, world!"
  echo "</p>"
echo "</li>";
  • 0.0005789185秒
  • 0.0005957365秒
  • 0.0005026031秒

そもそも改行しないパターン

このコードの話

echo "<li><p>hello, world!</p></li>";
  • 0.0003429961秒
  • 0.0003750324秒
  • 0.0003119564秒

まとめ:結果と考察

割とはっきりと違いが見られました。

最も速かったのは「. で繋ぐパターン」で、「そもそも改行しないパターン」と同じ速度という結果に!

これにはびっくりしました。

逆に、最も遅かったのは「""で丸ごと囲むパターン」でした。一番読みやすくて好きだったんですが、けっこう遅かったですね..。

というか、phpタグは一旦閉じるべき?

他の方のブログなんかを見ていると、基本的にHTML文を記述するときは一度phpタグを閉じている人が多いように思います。

どっちがいいんだろうか...。

気になったので、そちらについても検証してみました!

php文の途中でhtmlを出力する時にphpタグを一度閉じるべきか、そのままechoで出力するべきかを速度比較で考察してみた。php文の途中でhtmlを出力する時にphpタグを一度閉じるべきか、そのままechoで出力するべきかを速度比較で考察してみた。
- Thank you for reading. -

コメント

コメントする