배열 대 슬라이스: 액세스 속도
요소에 액세스할 때 배열이 슬라이스보다 빠르다고 가정하는 경우가 많습니다. 그러나 벤치마킹 테스트에서는 로컬 슬라이스가 로컬 배열보다 성능이 뛰어나다는 놀라운 결과가 나타났습니다.
테스트에서는 전역 및 로컬 슬라이스 및 배열에 액세스하는 네 가지 기능을 벤치마킹했습니다. 결과를 분석해 보면 글로벌 슬라이스는 실제로 글로벌 어레이보다 약간 느렸으며 예상과 일치했습니다. 그러나 로컬 슬라이스는 로컬 배열보다 성능이 훨씬 뛰어났습니다.
이유
로컬 배열과 슬라이스 벤치마크 기능 모두에 대해 amd64 어셈블리를 조사한 결과 눈에 띄는 차이점이 드러났습니다. 배열 버전은 배열 액세스 작업 중에 배열의 주소를 메모리에 반복적으로 로드하는 반면, 슬라이스 버전은 메모리에서 한 번 로드한 후 레지스터에서만 계산을 수행합니다.
결론
이는 기본 배열을 역참조하여 슬라이스 요소에 액세스하는 데 관련된 추가 단계가 로컬 변수에 심각한 병목 현상을 일으키지 않음을 나타냅니다. 이 시나리오에서 슬라이스는 레지스터를 보다 효율적으로 사용하므로 더 빠른 액세스를 제공합니다. 이 결과는 큰 배열이나 슬라이스의 경우 또는 함수 인수로 전달된 경우에는 적용되지 않을 수 있다는 점에 유의할 가치가 있습니다.
위 내용은 배열과 슬라이스: 어느 것이 더 빠른 요소 액세스를 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!