저는 모델링 프로젝트를 위해 C#에서 고성능 배열이 필요합니다. 이 배열은 자주 크기를 조정해야합니다 (내용 보존). 인덱스에 자주 액세스되며 수십억 개의 조회를 수행 할 때 List가 일반적인 배열 []만큼 잘 수행되지 않는다는 느낌이 들게됩니다. 리사이즈시 불필요한 복사를 방지하는 버퍼가있는 고성능 어레이?
는 원래 VB.NET에서 나는 큰 배열 &을 수동으로 수를 유지하여,이에게 자신을 관리 : 이private _populations() as Population
private _populationCount as Integer
' When adding a population...
_populationCount += 1 ' Update true count of populations, not the arraysize
if _populationCount > _populations.Length then
'if adding a population & array has run out of space, increase by a buffer of 20%:
Redim Preserve _populations(_populationCount * 1.2)
end if
내가 쉽게 C#으로이를 구현할 수 있지만, 도구가 이미이 있는지 궁금 하군요 .NET Framework에서이 작업을 수행 할 수 있습니까? 성능이 중요하므로 우아함 또는 모범 사례를 위해 어떤 성능 저하도 허용 할 수 없습니다.
P. 수동으로 요소를 재사용 할 때 삽입 또는 제거에 대해 걱정하지 않습니다.
중복 : http://stackoverflow.com/questions/454916/performance-of-arrays-vs-lists – Brannon
"내 느낌은 목록이뿐만 아니라 수행하지 줘야한다는 것입니다 전통적인 어레이 []가 수십억 개의 조회를 할 때. " 왜 그렇게 생각하니? –
글쎄,이 데이터 구조에 대한 색인 생성이 정말로 중요하다면 'List'보다 빨리 처리 할 수 있습니다. 범위 검사 및 쓰기에 대한 반복기 무효화와 같은 추가 오버 헤드가 있습니다. JIT는 이것을 제거하지 않습니다. –
usr