Показать сообщение отдельно
Старый 24.12.2018, 18:00   #11
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Оптимизируем программы на с++

Цитата:
Сообщение от Gromov Посмотреть сообщение
Если вы используете программы, написанные на с++ (справедливо не только для контроллеров), то вы можете заметно увеличить их производительность (потребление процессорного времени) безболезненно и бесплатно.

...

Пишите, пожалуйста, критику и отзывы.
Посмотрел разницу в результате компиляции для x86_64.

Без флагов используются переменные на стеке и вычисления соответствуют выражению в исходном коде:

Код:
...
.L4:
	movl	-16(%rbp), %eax
	imull	-12(%rbp), %eax
	addl	%eax, -4(%rbp)
	sall	$5, -4(%rbp)
	addl	$1, -12(%rbp)
	cmpl	$4999999, -12(%rbp)
	jle	.L4
...
с оптимизацией переменные разместились в регистрах, а операция умножения была исключена из расчетов:

Код:
...
.L3:
	addl	%eax, %edx
	addl	$500, %eax
	sall	$5, %edx
	cmpl	$-1794967296, %eax
	jne	.L3
...
За счет этого и получилась разница во времени исполнения.
Gel вне форума   Ответить с цитированием