Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
1

#define VS inline

15.01.2013, 16:35. Просмотров 2164. Ответов 22
Метки нет (Все метки)

Что работает быстрее:

C++
1
2
3
4
5
6
7
8
9
#define SQR(x) x*x
 
void Func()
{
for(int i = 0; i < 10; ++i)
{
cout << SQR(i) << endl;
}
}
или

C++
1
2
3
4
5
6
7
8
9
inline int sqr(int x){ return x*x; }
 
void Func()
{
for(int i = 0; i < 10; ++i)
{
cout << sqr(i) << endl;
}
}

Или же в каких ситуациях быстрее то или иное?
Компилятор: VS2012
Настройки оптимизации: максимальная скорость

Мое предположение - дефайн быстрее инлайна, потому что последний - это вызов функции. Даже не смотря на то, что быстрый вызов функции.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 16:35
Ответы с готовыми решениями:

inline и define
Почему использовать inline-функции лучше, чем использовать команду...

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая...

inline функции vs инструкции inline функций
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если...

#define
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем...

22
MrGluck
Модератор
Эксперт CЭксперт С++
8105 / 4956 / 1436
Регистрация: 29.11.2010
Сообщений: 13,451
16.01.2013, 01:16 21
go, "Компилятор предпочтительнее препроцессора".
У Скотта Мейерса в книге "Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов" подробно описано в "Правило 1. Предпочитайте const и inline использованию #define" (Москва, 2000г, стр. 26). Подобный текст я встречал и ранее у других авторитетных авторов, но их имена не припомню.

Добавлено через 2 минуты
желательно использовать его исключать
*желательно использование его исключать
0
Evg
Эксперт CАвтор FAQ
19346 / 7200 / 537
Регистрация: 30.03.2009
Сообщений: 20,139
Записей в блоге: 30
16.01.2013, 08:22 22
ТС всего лишь спросил, который из двух КОНКРЕТНЫХ фрагментов кода работает быстрее, явно указав, что он знает про подводные камни при использовании препроцессора

И всё равно тема потихоньку начинается превращаться в гавносрач на тему, что одни читали в книгах, будто бы макросы это ацтой, а другие, которые понимают, что к чему, им возражают
1
alex_x_x
16.01.2013, 08:41     #define VS inline
  #23

Не по теме:

Evg, дада, я даже не смотря тему по названию это определил :D

0
16.01.2013, 08:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2013, 08:41
Привет! Вот еще темы с ответами:

define не
Здравствуйте. &quot;Дефайню&quot; &quot;%f&quot; для вывода: #define fss &quot;%f&quot;; . И потом делаю...

define
Всем здрасьте , что означает эта строчка? #define MAX(a,b) a&gt;b? a:b

C++define
Люди добрые , помогите советом ! Фрагмент с кодом самого метода : ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru