PHP 프로그래밍에서 end () 및 count () -1은 종종 배열의 마지막 요소에 액세스하는 데 사용됩니다. 두 사람은 기능적으로 유사하지만 성능 차이는 종종 간과됩니다. 이 기사는 특정 코드 예제를 통해 두 가지 방법 간의 효율 차이를 분석하고 많은 경우 end () 가 더 효율적인 이유를 보여줍니다.
PHP의 end () 함수는 배열의 내부 포인터를 배열의 마지막 요소에 가리키고 해당 요소의 값을 반환하는 데 사용됩니다. 매우 간단하며 배열에서 추가 계산이 필요하지 않습니다.
$array = [10, 20, 30, 40, 50];
$lastElement = end($array);
echo $lastElement; // 산출 50
한편, COUNT () 함수를 사용하면 배열의 총 길이를 얻은 다음 Count () -1을 통해 배열의 마지막 요소의 인덱스를 얻을 수 있습니다. 이러한 방법에는 배열에 대한 두 개의 호출이 필요합니다. 하나는 배열의 길이를 가져오고, 다른 하나는 배열 인덱스를 통해 요소에 액세스합니다.
$array = [10, 20, 30, 40, 50];
$lastElement = $array[count($array) - 1];
echo $lastElement; // 산출 50
두 방법의 성능 차이를 분석 해 봅시다.
end () 함수의 주요 장점은 내부 포인터에서 작동한다는 것입니다. end ()가 호출되면 PHP는 단순히 내부 포인터를 배열의 마지막 요소로 이동하고 해당 요소의 값을 반환합니다. 이 작업은 대부분의 경우 일정한 시간 O (1)이며 배열의 순회 또는 배열 길이를 계산하는 것은 아닙니다.
count () 함수는 전체 배열을 가로 질러 길이를 계산합니다. 배열의 크기가 이미 있더라도 Count ()는 여전히 전체 배열을 반복하고 요소 수를 반환해야합니다. 그런 다음 Count () -1을 사용하여 배열의 마지막 요소의 인덱스를 계산 한 다음 인덱스를 통해 요소에 액세스하십시오. 이 프로세스에는 추가 시간 복잡성 O (N)가 필요합니다. 최악의 경우 () 에서 전체 배열을 스캔해야하기 때문입니다.
배열이 매우 큰 것으로 가정하면 마지막 요소에 액세스하고 성능 차이를 측정하기 위해 end () 및 count () -1을 사용합니다.
// 수백만 개의 요소 배열을 만듭니다
$array = range(1, 1000000);
// 사용 end() 마지막 요소를 얻으십시오
$start = microtime(true);
$lastElementEnd = end($array);
$end = microtime(true);
echo 'end() 시간: ' . ($end - $start) . ' 두번째' . PHP_EOL;
// 사용 count()-1 마지막 요소를 얻으십시오
$start = microtime(true);
$lastElementCount = $array[count($array) - 1];
$end = microtime(true);
echo 'count()-1 시간: ' . ($end - $start) . ' 두번째' . PHP_EOL;
대부분의 경우 end ()는 count () -1 보다 훨씬 더 잘 수행됩니다. 이는 프로그램의 실행 시간을 크게 줄일 수 있으므로 배열의 마지막 요소에 대한 빈번한 액세스가 필요한 시나리오에 특히 중요합니다.
요약하면, end () 와 count () -1 은 배열의 마지막 요소에 액세스하는 데 사용될 수 있지만 End () 메소드는 일반적으로 배열이 더 클 때 더 효율적입니다. 불필요한 횡단을 피하고 마지막 요소를 직접 반환합니다. Count () -1은 배열의 길이를 추가로 계산해야하므로 시간 복잡성이 증가합니다.
성능에 민감한 코드를 작성하는 경우 END () 우선 순위를 정하는 것이 더 나은 옵션입니다. 특히 배열의 마지막 요소에 자주 액세스 해야하는 경우.