Help us understand the problem. What is going on with this article?

[PHP] forループ判定による実行速度比較

More than 3 years have passed since last update.

数年前「ループのカウント判定としてcount関数使うな」と注意されたことがあり、思い出したので計測してみた。

10文字の変数のカウントを10000ループで処理をした。

結果:全て変数に入れてループした方が早い。

php -version
PHP 5.5.36 (cli) (built: May 29 2016 01:07:06)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

httpd -v
Server version: Apache/2.4.18 (Unix)
Server built: Feb 20 2016 20:03:19

1回目: 変数格納した方が0.0441207885742早い
変数ループ:0.0257985591888秒
count関数使用したループ:0.0699193477631秒

2回目: 変数格納した方が0.0399599075317早い
変数ループ:0.0249683856964秒
count関数使用したループ:0.0649282932281秒

3回目: 変数格納した方が0.0579628944397早い
変数ループ:0.031925201416秒
count関数使用したループ:0.0898880958557秒

4回目: 変数格納した方が0.0402450561523早い
変数ループ:0.0245311260223秒
count関数使用したループ:0.0647761821747秒

5回目: 変数格納した方が0.0388638973236早い
変数ループ:0.0247168540955秒
count関数使用したループ:0.0635807514191秒

6回目: 変数格納した方が0.037935256958早い
変数ループ:0.0240049362183秒
count関数使用したループ:0.0619401931763秒

7回目: 変数格納した方が0.0404722690582早い
変数ループ:0.0258228778839秒
count関数使用したループ:0.0662951469421秒

8回目: 変数格納した方が0.0397148132324早い
変数ループ:0.0250782966614秒
count関数使用したループ:0.0647931098938秒

9回目: 変数格納した方が0.0373675823212早い
変数ループ:0.0237381458282秒
count関数使用したループ:0.0611057281494秒

10回目: 変数格納した方が0.0383319854736早い
変数ループ:0.0248041152954秒
count関数使用したループ:0.063136100769秒

$array = array('a' ,'b' ,'c' ,'d' ,'e' ,'f' ,'g' ,'h' ,'i' ,'j');
$count = 10000;

for($n = 1; $n < 11; $n++){
  $sum_v = 0;
  $sum_c = 0;
  for($l = 0; $l < $count; $l++){
    $time_start_v = microtime(true);
    $arrayCount = count($array);
    for ($i = 0; $i < $arrayCount; $i++) {
    }
    $time_v = microtime(true) - $time_start_v;
    $sum_v += $time_v;

    $time_start_c = microtime(true);
    for ($i = 0; $i < count($array); $i++) {
    }
    $time_c = microtime(true) - $time_start_c;
    $sum_c += $time_c;
  }
  $vc = $sum_v-$sum_c;
  echo $n . "回目: ";
  echo $sum_v > $sum_c ? "count関数の方が" . abs($sum_v-$sum_c) . "早い<br>" : "変数格納した方が". abs($sum_v-$sum_c) . "早い<br>";
  echo "変数ループ:" . $sum_v . "秒<br>";
  echo "count関数使用したループ:" . $sum_c . "秒<br><br>";
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした