내가 아는 모든 .net 프로파일 러는 CPU 캐시의 효과를 고려하지 않습니다.CPU 캐시의 효과를 고려하여 .net 응용 프로그램을 어떻게 프로파일 링합니까?
CPU 캐시에서 필드를 읽는 것이 주 메모리에서 읽는 것보다 100 배 빠를 수 있다면 큰 요인이 될 수 있습니다. (answer에서 이것을 설명해야만했습니다.)
저는 프로파일 러가 말하는 느린 루프를 빠르게하는 긴 타이머를 너무 많이 보았습니다. 실제로는 CPU 캐시가 속도를 빠르게합니다.
예컨대 나는 데이터 액세스가 CPU 캐시 많이 누락뿐만 아니라 단지 내가 더 신뢰할 수있는 기본 프로파일 링 결과를 얻는 경우 볼 수 있도록 바랍니다.
과거에는 데이터를 좀 더 압축하여 CPU 캐시에 모두 넣거나 다른 데이터를 액세스하면 큰 영향을 미칠 수 있음을 발견했습니다. 예 : 배열은 CPU 캐시에 적합하지 않을 경우
AccessArrarFromStartAndDoSomething()
AccessArrayFromEndAndDoSomethingElse()
더 나은 다음
AccessArrarFromStartAndDoSomething()
AccessArrayStartEndAndDoSomethingElse()
이지만, inprovment의 유형을 발견하는 것은 매우 어렵다. 이 시스템을 많이 확산 할 수있는 CPU의 캐시 나은에 맞도록
지출 더 많은 CPU 사이클은 데이터가 작게,하지만 대부분의 프로파일은 다른 방향을 가리 킵니다.
정확하게 무엇입니까? – Walter
.NET은 큰 런타임의 고수준 언어이며 CPU 캐시가 가능하지만 그것을 최적화하기위한 작업을 수행하지 못했습니다. –