Я понимаю, что на этот вопрос невозможно ответить абсолютно, но я только после приблизительных цифр:
Учитывая C-программу разумного размера (тысячи строк кода), в среднем, сколько ASM-инструкций будет сгенерировано. Другими словами, каково реалистичное соотношение команд C-ASM? Не стесняйтесь делать предположения, такие как «с текущими архитектурами x86».
Я пытался узнать об этом в Google, но ничего не смог найти.
Добавление : отмечая, насколько путаница принесла этот вопрос, я чувствую некоторую потребность в объяснении: что я хотел бы узнать этим ответом, так это узнать, на практике, что означает "3GHz". Я полностью осознаю, что пропускная способность на Герц сильно варьируется в зависимости от архитектуры, вашего оборудования, кэшей, скорости шины и положения Луны.
Я не за точным и научным ответом, а скорее за эмпирическим ответом, который можно выразить в непостижимых масштабах.
Это не тривиальный ответ на место (как я стал замечать), и это было мое лучшее усилие в этом. Я знаю, что количество полученных строк ASM на строки C варьируется в зависимости от того, что вы делаете. i++
находится не в том же районе, что и sqrt(23.1)
- я знаю это. Кроме того, независимо от того, какой ASM я получаю из C, ASM интерпретируется в различные наборы микрокода внутри процессора, что, опять же, зависит от того, используете ли вы AMD, Intel или что-то еще, и их соответствующие поколения. Я знаю об этом также.
Примерные ответы, которые я получил до сих пор, - это то, к чему я стремился: проект, достаточно большой, в среднем составляет около 2 строк x86 ASM на 1 строку ANSI-C. Сегодняшние процессоры, вероятно, в среднем будут составлять примерно одну команду ASM за такт, после того как конвейеры заполнены и дан достаточно большой образец.