배열 구성원을 추가하기 위해 PHP에서 사용하는 것이 더 낫습니다.
$array[] = $value;
또는
array_push($array, $value);
?
매뉴얼에는 함수 호출을 피하는 것이 더 낫다고 나와 있지만 필자는 읽은 $array[]
것보다 훨씬 느립니다 array_push()
. 몇 가지 설명 또는 벤치 마크는 무엇입니까?
배열 구성원을 추가하기 위해 PHP에서 사용하는 것이 더 낫습니다.
$array[] = $value;
또는
array_push($array, $value);
?
매뉴얼에는 함수 호출을 피하는 것이 더 낫다고 나와 있지만 필자는 읽은 $array[]
것보다 훨씬 느립니다 array_push()
. 몇 가지 설명 또는 벤치 마크는 무엇입니까?
답변:
벤치 마크는 없지만 개인적 $array[]
으로보기가 더 깔끔하고 수십만 개의 문자열을 배열에 추가 할 계획이 아니라면 정직하게 밀리 초에 걸쳐 머리카락을 분할하는 것은 무의미하다고 생각합니다.
편집 :이 코드 실행 :
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
$array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
array_push($array, $i);
}
print microtime(true) - $t;
사용하는 첫 번째 방법 $array[]
은 두 번째 방법 보다 거의 50 % 빠릅니다.
Run 1
0.0054171085357666 // array_push
0.0028800964355469 // array[]
Run 2
0.0054559707641602 // array_push
0.002892017364502 // array[]
Run 3
0.0055501461029053 // array_push
0.0028610229492188 // array[]
PHP 매뉴얼에 다음과 같이 언급되어 있으므로 이것은 놀라운 일이 아닙니다.
array_push ()를 사용하여 하나의 요소를 배열에 추가하는 경우 $ array [] =를 사용하는 것이 좋습니다. 이렇게하면 함수 호출에 대한 오버 헤드가 없기 때문입니다.
array_push
여러 값을 추가 할 때 더 효율적 이라고 표현되는 방식은 놀라지 않을 것 입니다. 편집 : 호기심에서 몇 가지 추가 테스트를 수행했으며 많은 양의 추가에도 개별 $array[]
통화가 큰 것보다 빠릅니다 array_push
. 흥미 롭군.
$array[]
실제로 컴퓨터에서 1M 할당에 대해 300ms 대 2000ms 라는 것이 훨씬 빠르다는 것을 확인했습니다 . 그러나 array_push에서 한 번에 20 개의 항목을 추가하는 것은 약 20 $array[] =
초 정도 빠릅니다 .
에 대한 PHP 문서에서array_push
:
참고 : array_push ()를 사용하여 하나의 요소를 배열에 추가하는 경우 $ array [] =를 사용하는 것이 좋습니다. 이렇게하면 함수를 호출하는 오버 헤드가 없기 때문입니다.
길거리에서 []는 함수 호출에 대한 오버 헤드가 없기 때문에 더 빠르다는 것입니다. 게다가 PHP의 배열 함수를 좋아하는 사람은 없습니다 ...
"그건 ... 건초 더미, 바늘 .... 아니면 바늘 건초 더미 ... 아, 젠장 ... [] ="
성능에 대한 질문이 더 많았지 만 사람들은이 질문을 사용 array_push
하거나 사용하는 것이 좋은지 궁금해 할 것입니다.$arr[]
.
이 함수는 여러 값에 대해 더 적은 줄을 의미 할 수 있습니다.
// 1 line:
array_push($arr, "Bob", "Steve");
// versus 2 lines:
$arr[] = "Bob";
$arr[] = "Steve";
그러나 , array_push
...
나는 $arr[]
.
추가하고 싶지 않습니다 : int array_push(...)
배열의 새로운 요소 수를 반환합니다 ( php doc ). 보다 유용하고 압축 할 수 있습니다 $myArray[] = ...; $total = count($myArray);
.
또한 array_push(...)
변수가 스택으로 사용될 때 의미가있다.