"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 대규모 배열의 경우 isset이 in_array보다 더 효율적인가요?

대규모 배열의 경우 isset이 in_array보다 더 효율적인가요?

2024년 11월 11일에 게시됨
검색:712

Is isset More Efficient Than in_array for Large Arrays?

in_array 또는 isset 중 어느 것이 더 효율적인가요?

대규모 배열을 처리할 때는 효율성을 위해 코드를 최적화하는 것이 중요합니다. 두 가지 일반적인 접근 방식은 in_array 함수를 사용하고 isset을 사용하여 키 존재를 확인하는 것입니다.

in_array

in_array 함수는 값을 배열과 비교하고 배열이 있으면 true를 반환합니다. . 시간 복잡도는 O(n)입니다. 여기서 n은 배열의 요소 수입니다. 이는 배열 크기가 증가함에 따라 검색 시간이 선형적으로 증가한다는 것을 의미합니다.

isset

isset 함수는 값에 관계없이 배열에 키가 있는지 확인합니다. . 해시 테이블을 사용하여 키와 값을 저장하므로 키 조회에 O(1) 시간 복잡도가 발생합니다.

제공된 코드 예제에서는 다음과 같은 이유로 isset이 선호됩니다.

  • in_array의 O(n)에 비해 더 빠른 O(1) 검색을 활용합니다.
  • 다음과 같은 외부 함수를 호출하는 것보다 오버헤드가 적습니다. in_array.

벤치마킹 결과

이 효율성 차이를 설명하기 위해 10,000개의 요소가 있는 배열을 고려해 보세요.

isset: 0.009623
in_array: 1.738441

배열 크기가 커짐에 따라 두 접근 방식 간의 성능 격차가 더욱 커집니다.

추가 고려 사항

배열은 문제가 됩니다. 특히 $a[$new_val] 구문을 사용할 때 다음과 같은 충돌 방지 접근 방식을 사용할 수 있습니다. $a[md5($new_val)]. 이 기술은 또 다른 복잡성 계층을 도입하지만 충돌하기 쉬운 키 생성을 이용하는 잠재적인 DoS 공격을 완화할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3