Russian Qt Forum
Ноябрь 23, 2024, 18:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: u_int32 и inline  (Прочитано 8607 раз)
IzoLda
Гость
« : Январь 23, 2012, 09:57 »

объясните,пожалуйста что переменная u_int32 и в каких целях применяется ключевое слово inline??
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Январь 23, 2012, 10:11 »

u_int32 - 32-битное целое беззнаковое число.
inline говорит компилятору, что функцию нужно встроить. То есть не вызывать ее, а поместить ее код в место вызова. Можно не использовать, так как компилятор игнорирует это.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Январь 23, 2012, 10:21 »

Наверное лучше сказать что inline говорит компилятору что ф-цию/метод желательно встроить, а встроит он или нет - его личное дело. Если опыта маловато - можно спокойно жить без inline
Записан
IzoLda
Гость
« Ответ #3 : Январь 23, 2012, 10:31 »

а нужно ли подключать дополнительный заголовочный файл для переменной u_int32 ?
Записан
Disa
Гость
« Ответ #4 : Январь 23, 2012, 11:03 »

to Igors:
Мне из личного любопытства, тк опыт на плюсах есть, но не могу сказать что большой. У вас было когда вы в пром. коде что-то отпимизировали inlin'ом и это помогло?
Записан
mutineer
Гость
« Ответ #5 : Январь 23, 2012, 11:54 »

to Igors:
Мне из личного любопытства, тк опыт на плюсах есть, но не могу сказать что большой. У вас было когда вы в пром. коде что-то отпимизировали inlin'ом и это помогло?

Насколько я знаю из книг и советов коллег сейчас вручную писать inline почти бесполезно - компилятор лучше знает когда выгоднее функцию встроить, а когда нет
Записан
IzoLda
Гость
« Ответ #6 : Январь 23, 2012, 12:08 »

спасибо всем!)
Записан
Disa
Гость
« Ответ #7 : Январь 23, 2012, 12:44 »

to mutineer:
Я по этому и спросил. Улыбающийся  Саттер писал, что inline почти всегда эквивалентен пробелу, но тем не менее в конце говорит:

Цитировать
"Избегайте использования ключевого слова  inline или других попыток оптимизации до тех пор, пока на их необходимость не укажут измерения производительности программы"
« Последнее редактирование: Январь 23, 2012, 12:46 от Disa » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Январь 23, 2012, 14:42 »

to Igors:
Мне из личного любопытства, тк опыт на плюсах есть, но не могу сказать что большой. У вас было когда вы в пром. коде что-то отпимизировали inlin'ом и это помогло?
Когда-то было, правда обычно не более 5-10% Улыбающийся Да, сейчас что-то ускорить inlin'ом трудно, если вообще возможно. Но на мой взгляд inline хорош тем что сразу видно кто это: капитальная ф-ция/метод или так себе, аксессор и.т.п.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Январь 23, 2012, 14:53 »

Есть еще всякие force_inline.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gogi
Гость
« Ответ #10 : Январь 24, 2012, 08:01 »

Насколько я знаю из книг и советов коллег сейчас вручную писать inline почти бесполезно - компилятор лучше знает когда выгоднее функцию встроить, а когда нет

Некоторые функции не могут быть заинлайнены по ряду причин (например из-за forward declaration). В gcc можно включить соответствующий варнинг и это станет видно. После этого можно устранить эти причины и компилятор дальше уже сам справится. Так что смысл от inline'а всё же есть.
Записан
mutineer
Гость
« Ответ #11 : Январь 24, 2012, 11:10 »

После этого можно устранить эти причины и компилятор дальше уже сам справится

То есть гарантированно заинлайнит функцию?
Записан
gogi
Гость
« Ответ #12 : Январь 24, 2012, 12:30 »

То есть гарантированно заинлайнит функцию?

Не факт, он будет смотреть по обстоятельствам. Но это всё же лучше, чем гарантированное незаинлайнивание.
Записан
mutineer
Гость
« Ответ #13 : Январь 24, 2012, 12:36 »

То есть гарантированно заинлайнит функцию?

Не факт, он будет смотреть по обстоятельствам. Но это всё же лучше, чем гарантированное незаинлайнивание.

А разве отстутсвие inline гарантирует незаинлайнивание? Мне кажется что с включенными оптимизациями компилер может заинлайнить любую функцию по своему усмотрению
Записан
stima
Гость
« Ответ #14 : Январь 27, 2012, 12:13 »

Код:
class MyClass {
    private:
        int number;
   
    public:
        int getNumber() { return number; } //это инлайн функция, просто опущено ключевое слово.
};

Код:
template<class T>
inline T max(const T& a, const T& b) { return a > b ? a : b; }  // это адекватное исользование инлайн
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.