Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

#define VS inline - C++

15.01.2013, 16:35. Просмотров 1770. Ответов 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
Настройки оптимизации: максимальная скорость

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

C++ define
inline C++
C++ Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
C++ #define
C++ inline функции vs инструкции inline функций
define не C++
define C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
6625 / 3816 / 500
Регистрация: 29.11.2010
Сообщений: 10,068
16.01.2013, 01:16     #define VS inline #21
go, "Компилятор предпочтительнее препроцессора".
У Скотта Мейерса в книге "Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов" подробно описано в "Правило 1. Предпочитайте const и inline использованию #define" (Москва, 2000г, стр. 26). Подобный текст я встречал и ранее у других авторитетных авторов, но их имена не припомню.

Добавлено через 2 минуты
желательно использовать его исключать
*желательно использование его исключать
Evg
Эксперт CАвтор FAQ
17387 / 5625 / 351
Регистрация: 30.03.2009
Сообщений: 15,402
Записей в блоге: 26
16.01.2013, 08:22     #define VS inline #22
ТС всего лишь спросил, который из двух КОНКРЕТНЫХ фрагментов кода работает быстрее, явно указав, что он знает про подводные камни при использовании препроцессора

И всё равно тема потихоньку начинается превращаться в гавносрач на тему, что одни читали в книгах, будто бы макросы это ацтой, а другие, которые понимают, что к чему, им возражают
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2013, 08:41     #define VS inline
Еще ссылки по теме:

C++ #define
C++ c++11 и $define
inline и define C++
C++ Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
C++ #define c ::

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

Или воспользуйтесь поиском по форуму:
alex_x_x
16.01.2013, 08:41     #define VS inline
  #23

Не по теме:

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

Yandex
Объявления
16.01.2013, 08:41     #define VS inline
Ответ Создать тему
Опции темы

Текущее время: 18:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru