문제
최근 프로젝트 인터페이스를 구현할 때 배열이 너무 크면 데이터 반환 속도가 약간 느린 것을 발견했습니다. 인터페이스 데이터 반환에 대한 최대 응답 시간은 2초입니다. 디버깅을 반복한 결과 코드 세그먼트 중 가장 긴 부분이 in_array()
함수에 있는 것으로 나타났습니다.
솔루션 프로세스
스택오버플로우에서 솔루션 아이디어를 제공한 기사를 찾았습니다
- array_key_exists와 array_search 중 어느 것이 더 빠릅니까?
기사에 따르면
array_key_exists
는array_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()
').text(i)); }; $numbering.fadeIn(1700); }); });위에서는 in_array 대규모 배열 쿼리의 성능 문제를 소개했으며 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.