Показать сообщение отдельно
Старый 24.12.2018, 18:13   #12
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Оптимизируем программы на с++

Цитата:
Сообщение от Gel Посмотреть сообщение
Посмотрел разницу в результате компиляции для x86_64.
x86 - другая история, это CISC, а не RISC.



Цитата:
Сообщение от Gel Посмотреть сообщение
с оптимизацией переменные разместились в регистрах, а операция умножения была исключена из расчетов:

Код:
...
.L3:
	addl	%eax, %edx
	addl	$500, %eax
	sall	$5, %edx
	cmpl	$-1794967296, %eax
	jne	.L3
...
За счет этого и получилась разница во времени исполнения.
А вот как компилятор умножение на некруглую цифру заменил выделением константы - это внушает уважение и даже некоторые сомнения)) Это точно код нужного участка?

Всё честно для x86: размещение данных в регистрах и выполнение одного цикла тактов за 10 с загрузкой пяти модулей конвейера. Выполняться должно почти мгновенно.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 24.12.2018 в 18:23
Arsie вне форума   Ответить с цитированием