Все известные мне профилировщики .net не учитывают влияние кеша процессора.
Учитывая, что чтение поля из кеша ЦП может быть в 100 раз быстрее, чем чтение из основной памяти, это может быть важным фактором. (Мне просто нужно было объяснить это в ответе)
Я видел слишком много людей, которые тратят много времени на ускорение циклов, которые, по словам профилировщика, медленные, тогда как в реальной жизни кэш процессора делает их быстрыми.
Например, я хочу иметь возможность видеть, часто ли при доступе к данным отсутствует кэш процессора, а также просто получать базовые результаты профилирования, которым я могу больше доверять.
В прошлом я обнаружил, что если сделать мои данные более компактными, все они будут помещаться в кэш ЦП, или изменение другого, доступ к данным может иметь большой эффект. Например.
AccessArrarFromStartAndDoSomething()
AccessArrayFromEndAndDoSomethingElse()
Тогда лучше
AccessArrarFromStartAndDoSomething()
AccessArrayStartEndAndDoSomethingElse()
если массив не помещается в Кэш ЦП, но очень трудно найти такой тип усовершенствования.
Затрата большего количества циклов ЦП на уменьшение размера данных, чтобы они лучше помещались в Кэш ЦП, может привести к распространению множества систем, но большинство профилировщиков укажут вам другое направление.