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

 
 
> Inline функции.
Jenya7
сообщение Feb 26 2015, 10:54
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



я в main вызываю функции. но я хочу сократить время исполнения. вместо того чтоб тратить время на переход к функциям я могу заинлайнить их. правильно ли я мыслю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CrimsonPig
сообщение Feb 26 2015, 11:18
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(Jenya7 @ Feb 26 2015, 10:54) *
я в main вызываю функции. но я хочу сократить время исполнения. вместо того чтоб тратить время на переход к функциям я могу заинлайнить их. правильно ли я мыслю?


в общем правильно.
С другой стороны, есть очень мудрое правило: "программисту не стоит пытаться быть умнее хорошего оптимизирующего компилятора".
"inline" - это всего лишь рекомендация, при включении оптимизации по скорости компилятор сам решит что делать. А сделать он может вообще на первый взгляд очень странные вещи.
Например, статические функции не члены классов он точно догадается сам заинлайнить (если сочтет нужным), он может вообще порвать функции на куски и эти куски заинлайнить по местам вызова в разных частях исходника..
Так что если сильно интересует оптимизация, то следует глядеть в ассемблерный листинг на выходе и пытаться понять, "могут ли мои шаловливые ручки сделать лучше ?". скорее всего, нет.
Есть, конечно, тяжелая артиллерия, типа __force_inline или как его там. Только необдуманное применение таких вещей может легко привести к противоположным результатам.

А ответ на вопрос "стало ли быстрее" могут дать только сравнительные тесты. В подобных случаях некоторые по началу "красивые" идеи ведут к негативным результатам по совсем неочевидным причинам.
Вот, например, кое-кто с помощью молотка и чьей-то матери заинлайнил все, что движется в надежде получить быстрый код и сократить время на вызов процедур. Код разбух и стал плохо ложиться на instruction cache.. Каков будет результат ?







Go to the top of the page
 
+Quote Post



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

 


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


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