PHPの要素の数を見つけるには$array
、どちらが高速/優れている/強力ですか?
count($array)
またはsizeof($array)
?
編集する
Andy Lesterのおかげで、多言語の観点から意味するように質問を洗練させました。手動コメンターは言う
「[sizeof]は、Cに基づく他の多くの言語で同じことを意味するものではありません。」
これは本当ですか?
PHPの要素の数を見つけるには$array
、どちらが高速/優れている/強力ですか?
count($array)
またはsizeof($array)
?
Andy Lesterのおかげで、多言語の観点から意味するように質問を洗練させました。手動コメンターは言う
「[sizeof]は、Cに基づく他の多くの言語で同じことを意味するものではありません。」
これは本当ですか?
回答:
phpbenchによると:
ループの長さを事前に計算しておく価値はありますか?
//pre-calculate the size of array
$size = count($x); //or $size = sizeOf($x);
for ($i=0; $i<$size; $i++) {
//...
}
//don't pre-calculate
for ($i=0; $i<count($x); $i++) { //or $i<sizeOf($x);
//...
}
1バイトの値を持つ1000個のキーを持つループが提供されます。
+---------+----------+
| count() | sizeof() |
+-----------------+---------+----------+
| With precalc | 152 | 212 |
| Without precalc | 70401 | 50644 |
+-----------------+---------+----------+ (time in µs)
したがって、私はpre calcでsizeof()ではなくcount()を使用することを個人的に好みます。
ウェブサイトによるsizeof()
と、はのエイリアスなcount()
ので、同じコードを実行している必要があります。sizeof()
それを解決する必要があるため、おそらくオーバーヘッドが少しありますcount()
か?それは非常に最小限でなければなりません。
私はこれが古いことを知っていますが、私がこれをPHP 7.2で試したことを述べたいだけです。
<?php
//Creating array with 1 000 000 elements
$a = array();
for ($i = 0; $i < 1000000; ++$i)
{
$a[] = 100;
}
//Measure
$time = time();
for ($i = 0; $i < 1000000000; ++$i)
{
$b = count($a);
}
print("1 000 000 000 iteration of count() took ".(time()-$time)." sec\n");
$time = time();
for ($i = 0; $i < 1000000000; ++$i)
{
$b = sizeof($a);
}
print("1 000 000 000 iteration of sizeof() took ".(time()-$time)." sec\n");
?>
そして結果は:
1 000 000 000 iteration of count() took 414 sec
1 000 000 000 iteration of sizeof() took 1369 sec
したがって、を使用してくださいcount()
。
1 000 000 000 iteration of count() took 525 sec
1 000 000 000 iteration of sizeof() took 1361 sec
sizeof()
count()
ここで述べたように単にのエイリアスです