Просто из любопытства, полезен ли счетчик команд для оценки производительности кода?
Я знаю, что во времена "простых" конструкций ЦП можно было разумно предположить, что каждый код операции будет занимать ровно столько наносекунд процессорного времени, но в наши дни со всеми сложными схемами кэширования памяти, на - Переупорядочение кода операции «на лету», конвейерная обработка, суперскалярная архитектура и все остальное, что было добавлено в современный ЦП, дает ли простой подсчет выполнения кода операции хороший показатель того, сколько времени займет выполнение кода? Или время исполнения будет изменяться в зависимости от (например) шаблонов доступа к памяти и последовательности выполнения кодов операций, как это будет происходить на исходной частоте выполнения кодов операций?
Я подозреваю, что единственный способ надежно предсказать производительность кода в эти дни - это запустить код на целевой архитектуре и рассчитать время .... то есть часто, когда кажется, что компилятор выпустил неэффективный код, он фактически что-то умное, которое использует тонкую особенность современной архитектуры процессора.