Количество циклов, принятых для C ++ или ANSI C? - PullRequest
1 голос
/ 03 ноября 2010

Есть ли где-нибудь в Интернете, где я могу получить представление о том, что воспринимает синтаксис различных языков программирования с точки зрения циклов процессора (Core i7 и Core 2)? В университете я изучил язык ассемблера ARM, и мы могли отобразить число циклов, необходимых для выполнения оператора вычитания и т. Д. Я просто подумал, возможно ли это сделать с помощью языка более высокого уровня на Core i7 или Core 2?

Ответы [ 3 ]

8 голосов
/ 03 ноября 2010

Нет.Это полностью зависит от того, какой компилятор вы используете, какие настройки оптимизации вы используете и т. Д.

Вы можете использовать свой любимый компилятор и настройки для генерации кода сборки, а из кода сборки вы можете делать такие прогнозы.

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

2 голосов
/ 03 ноября 2010

Вы должны отобразить инструкции более высокого уровня в инструкции по сборке вручную или посмотреть список сборки.А потом посмотрите здесь

http://gmplib.org/~tege/x86-timing.pdf

или здесь

http://www.intel.com/Assets/PDF/manual/248966.pdf

2 голосов
/ 03 ноября 2010

Как правило, в языках более высокого уровня отдельные операторы не отображаются точно на конкретные последовательности команд машинного кода. Компилятор, как правило, оптимизирует вещи, которые включают различные преобразования, компоновки и даже исключения инструкций. Поэтому обычно не имеет смысла заключать в кавычки такие метрики, как «выражение for занимает 20 циклов».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...