PHP에서 $array[] = $value와 array_sarray, $value 중 어느 쪽이 더 빠릅니까?
어레이 멤버를 추가하기 위해 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_module()을 사용하여 하나의 요소를 배열에 추가할 경우 $array[] =를 사용하는 것이 좋습니다. 이렇게 하면 함수를 호출하는 오버헤드가 발생하지 않기 때문입니다.
표현대로라면 놀라지 않을 거야array_push
값을 여러 개 추가하는 경우 효율적입니다.궁금해서 몇 가지 테스트를 더 해봤는데, 많은 양의 추가 테스트에 대해서도$array[]
통화는 큰 통화보다 빠르다array_push
.재밌는.
array_push()의 주요 용도는 여러 값을 배열 끝에 푸시할 수 있다는 것입니다.
문서에는 다음과 같이 기재되어 있습니다.
array_module()을 사용하여 하나의 요소를 배열에 추가할 경우 $array[] =를 사용하는 것이 좋습니다. 이렇게 하면 함수를 호출하는 오버헤드가 발생하지 않기 때문입니다.
의 PHP 매뉴얼:
주의: array_model()을 사용하여 하나의 요소를 배열에 추가하는 경우 $array[] =를 사용하는 것이 좋습니다. 이렇게 하면 함수를 호출하는 오버헤드가 발생하지 않기 때문입니다.
일반에서는 함수 호출에 대한 오버헤드가 없기 때문에 []이(가) 더 빠르다고 합니다.게다가 아무도 PHP의 어레이 기능을 좋아하지 않습니다.
"그건..."건초 더미, 바늘 더미... 아니면 바늘 더미... 아, 집어치워...[] = "
한 가지 차이점은 두 개 이상의 파라미터를 사용하여 array_push()를 호출할 수 있다는 것입니다.즉, 한 번에 여러 요소를 배열에 푸시할 수 있습니다.
$myArray = array();
array_push($myArray, 1,2,3,4);
echo join(',', $myArray);
인쇄하다1,2,3,4
단순한 $myarray[] 선언은 함수로 인해 발생하는 오버헤드가 없기 때문에 아이템을 아이템 스택에 밀어넣기만 하면 됩니다.
"array_push"는 함수이며 루프 내에 있을 때 여러 번 호출되므로 스택에 메모리를 할당합니다.
그러나 $array[] = $value를 사용하는 경우에는 어레이에 값을 할당하기만 하면 됩니다.
두 번째는 함수 호출이므로 일반적으로 코어 어레이 액세스 기능을 사용하는 것보다 속도가 느립니다., 스크립트 가 1000000 콜보다 합니다.array_push()
.
10,000,000 삽입을 사용한 간단한 벤치마크에 대해서는, 여기를 참조해 주세요.https://3v4l.org/sekeV
덧붙이고 싶지 않을 뿐입니다.int array_push(...)
는 배열 내의 새로운 요소 수를 반환합니다(PHP 매뉴얼).보다 편리하고 콤팩트하게 할 수 있습니다.$myArray[] = ...; $total = count($myArray);
.
한 also도.array_push(...)
변수는 스택으로 사용되는 경우에 의미가 있습니다.
언급URL : https://stackoverflow.com/questions/559844/which-is-faster-in-php-array-value-or-array-pusharray-value
'programing' 카테고리의 다른 글
문자열 배열을 java.util로 변환하고 있습니다.목록. (0) | 2022.10.27 |
---|---|
정수 접미사 J는 무슨 뜻입니까? (0) | 2022.10.27 |
JSON.stringify의 역방향? (0) | 2022.10.27 |
Java 스위치 문: 상수 표현이 필요하지만 IS 상수입니다. (0) | 2022.10.27 |
JVM이 JIT 컴파일 코드를 캐시하지 않는 이유는 무엇입니까? (0) | 2022.10.27 |