Из моего опыта в реальном (не имитированном) ARM, если я возьму счетчик циклов для части кода, число циклов будет изменяться, это потому что:
- Там может бытьконтекст переключается в середине вашего исполняемого кода.
- Исходное состояние ЦП может отличаться при входе в раздел кода.(например, содержимое конвейера, прогноз ветвления и т. д.)
- Состояние кэша будет другим при входе в раздел кода.
- Внешние факторы, такие как другое оборудование, обращающееся к внешней памяти.
Из-за всего этого взятие среднего значения (плюс некоторые другие статистические показатели) действительно является единственным практическим подходом для реального оборудования и реальной ОС.В хорошем симуляторе некоторые из этих факторов или могут быть устранены.
На некоторых реальных чипах (или, если поддерживается симулятором), модуль мониторинга производительности ARM может быть полезен.
Если вы программируете для Cortex A8 , то - это крутой онлайн счетчик циклов, который действительно поможет вам повысить производительность вашего кода.