Pull to refresh

Comments 4

> Из-за сильной конвейеризации современных процессоров такой профиль может ошибаться, и часто имеет смысл смотреть не только на инструкцию, которая считается горячей, но и на предыдущую.

Это абсолютно непредсказуемый фактор или все-таки есть какой-то набор «известных» инструкций о которых профайлер спотыкается? Было бы классно, чтобы профайлер это как-то учитывал и намекал пользователю.

Практически я бы сказал что профиль почти всегда смещен на одну, а то и две инструкции вниз.

Проблема не только в конкретных инструкциях. Есть еще skid, который происходит из-за того, что прерывание срабатывает не мгновенно, зависимости по данным, от которых зависит глубина конвейеризации и влияние того, где находятся эти данные (L1-кэш, L2, ...).


Очень много микро-архитектурных эффектов, которые, как мне кажется, почти невозможно предусмотреть и которые меняются от процессора к процессору. Поэтому это скорее непредсказуемый фактор, который очень тяжело учесть в профайлере

Можно попробовать выводить результат «честно» как его увидел профайлер или пытаться анализировать то, что происходит рядом и показывать «честный» разброс времени и аналитический.
Sign up to leave a comment.

Articles