>백엔드 개발 >PHP 튜토리얼 >in_array 대규모 배열 쿼리 성능 문제

in_array 대규모 배열 쿼리 성능 문제

WBOY
WBOY원래의
2016-07-29 08:59:101770검색

문제

최근 프로젝트 인터페이스를 구현할 때 배열이 너무 크면 데이터 반환 속도가 약간 느린 것을 발견했습니다. 인터페이스 데이터 반환에 대한 최대 응답 시간은 2초입니다. 디버깅을 반복한 결과 코드 세그먼트 중 가장 긴 부분이 in_array() 함수에 있는 것으로 나타났습니다.

솔루션 프로세스

스택오버플로우에서 솔루션 아이디어를 제공한 기사를 찾았습니다
- array_key_exists와 array_search 중 어느 것이 더 빠릅니까?

기사에 따르면

array_key_existsarray_search 전체 배열을 순회해야 하므로 O(n입니다. ). array_key_exists은 해시 테이블 조회이므로 O(1)입니다.

----구분선----

인 것 같습니다. PHP가 키(array_key_exists() 또는 간단히 isset($array[$key]))를 확인하는 속도가 더 빠릅니다. 값을 검색하려면 PHP가 배열을 순환해야 합니다. 키를 검색하려면 PHP가 해시 함수를 사용합니다.

이 배열은 사용자 계정을 저장하는 데 사용되며

원래 배열
$array=array('account1','account2','$account3');

수정된 배열
$array=array('account1'=>0,'account2'=>0,'$account3'=>0)

을 사용합니다. 🎜> 배열에 계정이 존재하는지 감지 isset($array[$account]))

요약

함수는 배열을 순회하므로 n(배열 길이)에 따라 O(n)이 증가합니다. 따라서 대용량 배열에 in_array() 함수를 사용하는 경우에는 효율성 문제를 고려해야 하며, PHP에서는 가능한 한 핵심 쿼리를 사용해야 합니다. >in_array()

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i
').text(i)); }; $numbering.fadeIn(1700); }); });

위에서는 in_array 대규모 배열 쿼리의 성능 문제를 소개했으며 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.