PHP 개발에서 배열 교차점 및 유니온의 계산은 특히 대규모 데이터 처리에 직면 할 때 매우 일반적인 작업입니다. 성능 문제는 종종 개발 병목 현상이됩니다. 이 기사는 해시 테이블 구조를 사용하여 기존 알고리즘의 시간 복잡성을 O (N * M)에서 O (N + M)로 줄이는 효율적인 최적화 방법을 소개합니다.
해시 테이블은 데이터를 키 값 쌍으로 저장하는 데이터 구조입니다. 일정한 시간 내에 검색 및 삽입 작업을 완료 할 수 있으며, 이는 요소가 존재하는지 신속하게 결정하는 데 매우 적합합니다. 이 기능은 배열 교차점 및 유니언의 계산을 최적화하는 데 사용됩니다.
전통적인 방법은 in_array를 사용하여 하나씩 검색하고 시간 복잡성은 O (n*m)이며 효율이 낮습니다. 개선 사항은 다음과 같습니다.
function intersect_hash($arr1, $arr2) {
$lookup = [];
foreach ($arr1 as $value) {
$lookup[$value] = true;
}
$result = [];
foreach ($arr2 as $value) {
if (isset($lookup[$value])) {
$result[] = $value;
}
}
return $result;
}
이 최적화 후 구현 된 시간 복잡성은 O (N + M)이므로 대형 어레이 처리에 더 효율적입니다.
Unity는 교차로와 유사하게 처리되므로 해시 테이블을 사용하여 모든 비 중복 요소를 저장할 수 있습니다.
function union($arr1, $arr2) {
$lookup = [];
foreach ($arr1 as $value) {
$lookup[$value] = true;
}
foreach ($arr2 as $value) {
$lookup[$value] = true;
}
$result = array_keys($lookup);
return $result;
}
유사하게,이 방법의 시간 복잡성은 O (n + m)이며, 반복 값의 계산을 피하고 고성능을 유지합니다.
다음은 100,000과 50,000의 길이의 두 배열에 대한 원래 및 최적화 된 방법을 사용하여 교차로 및 노조 작업의 실행 시간을 비교하는 것입니다.
작동 유형 | 원래 방법 | 해시 테이블 최적화 |
---|---|---|
교차로 | 2.00 초 | 0.05 초 |
모으다 | 1.80 초 | 0.10 초 |
결과는 해시 테이블 최적화 전략이 빅 데이터 시나리오에서 기존 구현보다 훨씬 더 잘 수행되어 컴퓨팅 시간을 크게 단축 시킨다는 것을 보여줍니다.
해시 테이블을 통해 PHP 배열 교차로 및 유니언의 계산을 최적화하면 코드 실행 효율성을 향상시킬뿐만 아니라 전반적인 시스템 성능을 향상시킬 수 있습니다. 이 방법은 간단하고 구현하기 쉽고 실제 프로젝트에서 홍보 및 응용 프로그램에 적합합니다.