реклама на сайте
подробности

 
 
> Особенности кодогенерации и оптимизации в Keil
Timmy
сообщение Sep 13 2016, 06:17
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Обнаружил сегодня, что в Кейле крайне нежелательно использовать функции std::min и std::max. Как и любые инлайн функции, которым передаётся ссылка на переменные интегрального типа.
Во-первых, если не включён режим оптимизации по времени, Кейл не инлайнит даже очень короткие функции, которые заинлайнить и короче и быстрее, чем выносить. По этой причине включение оптимизации по времени может давать и более короткий код biggrin.gif .
Во-вторых, даже если функция с параметром-ссылкой инлайнится, любая переменная, переданная в инлайн функцию по ссылке, будет принудительно размещена в памяти на стеке, а не в регистре, даже когда в этом нет никакой необходимости!

Хотя по-хорошему компилятор мог бы при возможности автоматически убирать ссылки на интегральные типы из прототипа, даже когда инлайн функция аутлайнится.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Sep 13 2016, 06:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Timmy @ Sep 13 2016, 09:17) *
крайне нежелательно использовать функции std::min и std::max.

Ну, это вы загнули. Не все постоянно куда-то опаздывают и считают наносекунды biggrin.gif
И вообще, идеальных компиляторов не бывает. Поменьше заглядывайте в дизассемблер, и жизнь наладится biggrin.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 22:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016