배열 대 슬라이스: 액세스 속도
Go에서 슬라이스와 배열은 요소를 저장하는 데 사용되는 밀접하게 관련된 두 가지 데이터 구조입니다. 특정 데이터 유형. 유사점을 공유하지만 특히 글로벌 인스턴스와 로컬 인스턴스를 비교할 때 한 가지 주요 차이점은 액세스 속도에 있습니다.
벤치마크 결과:
성능 차이를 평가하려면 벤치마크는 다음을 사용하여 수행되었습니다. 함수:
결과에 따르면 글로벌 스토리지보다 글로벌 스토리지의 액세스 속도가 지속적으로 더 빠른 것으로 나타났습니다. 조각. 그러나 로컬 슬라이스는 로컬 배열보다 훨씬 더 성능이 뛰어났습니다.
설명:
이러한 불일치의 원인을 확인하기 위해 로컬 배열의 amd64 어셈블리와 슬라이스 벤치마크 기능이 있습니다.
이는 로컬 슬라이스가 효율적인 레지스터 활용으로 이점을 얻는 반면, 로컬 어레이는 어레이의 메모리를 지속적으로 로드하여 추가 오버헤드를 발생시킨다는 것을 의미합니다. address.
또한 어레이 버전은 긴 어셈블리 루틴인 Runtime.duffcopy 함수를 호출하는 반면, 슬라이스 버전은 호출하지 않습니다. 이는 성과 격차를 더욱 심화시킵니다.
위 내용은 Go 어레이와 슬라이스: 로컬 슬라이스 액세스가 로컬 어레이 액세스보다 빠른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!