Всички .net профайлери, които познавам, не вземат под внимание ефекта от кеша на процесора.
Като се има предвид, че четенето на поле от кеша на процесора може да бъде 100 по-бързо от четенето му от основната памет, това може да бъде голям фактор. (Просто трябваше да обясня това в отговор)
Виждал съм твърде много хора да прекарват дълъг таймер, за да ускорят цикли, за които профайлърът казва, че са бавни, докато в реалния живот кешът на процесора ги прави бързи.
Например искам да мога да видя дали при достъп до данни липсва много кешът на процесора, както и просто да получа основни резултати от профилирането, на които мога да вярвам повече.
В миналото открих, че като направя данните си по-компактни, всички те ще се поберат в кеша на процесора или промяната на другия достъп до данните може да има голям ефект. напр.
AccessArrarFromStartAndDoSomething()
AccessArrayFromEndAndDoSomethingElse()
Тогава е по-добре
AccessArrarFromStartAndDoSomething()
AccessArrayStartEndAndDoSomethingElse()
ако масивът няма да се побере в кеша на процесора, но е много трудно да се намери такъв тип подобрение.
Изразходването на повече цикли на процесора, за да се направят данните по-малки, така че да пасват по-добре в кеша на процесора, може да разпространи много системи, но повечето профайлъри ще ви насочат в другата посока.