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()
여기에 언급 된 것처럼 별칭입니다 .