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