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

реализация класса в .h файле хорошо или плохо? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с полем в классе http://www.cyberforum.ru/cpp-beginners/thread939514.html
Пишу класс.Сюда его выкладывать не хочу,ибо он достаточно обширный.В классе доступе private задаю поле дескриптора файла.Тоесть что-то типо того: Class Myclass { private: HANDLE file; ... public: ... };
C++ Сообщения между win32 приложениями Как отправить сообщение (аналог системных типа WM_DESTROY только свои) и обработать приемником? приёмник это обычное консольное win32 приложение(когда в визуале пустой проект win32 создаешь) http://www.cyberforum.ru/cpp-beginners/thread939505.html
Как назвать классы? C++
Сразу замечу, что дело происходит в 2D без физики, как таковой. 1) У меня есть классы: Mixer - звуковой движок Graphics - графический движок У звукового движка есть базовый класс: MixerPrimitiveType (некоторая инфа для воспроизведения) от которого наследюутся:
C++ Не удается подключить к приложению gtest и свою статическую либу VS 2010
Здравствуйте, господа. Возникла проблема с линкером в VS 2010 после подключения к консольному приложению собственной же статической библиотеки. В солюшене 2 проекта: 1 - статическая библиотека, 2 - приложение для тестов её функций, к этому приложению подключен gtest через его статическую либу. В 1-м проекте статической библиотеки имеется h-ник с API этой либы. Так как API может оперировать...
C++ Консоль для ведения логов http://www.cyberforum.ru/cpp-beginners/thread939483.html
Не уверен, что пишу туда, куда нужно, но есть только один способ узнать. Интересуют существующие решения по сабжу. Требования простые: - Минимум зависимостей - Цветной текст и фон - Динамические фильтры записей - Много буков - Желательно, отдельный поток и кеширование на диск - Картинки и ссылки приветствуются
C++ Крутящееся колесо Может ли кто написать (срочно) программу крутящееся колесо, исходник чтобы был с комментариями. подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16937 / 5342 / 328
Регистрация: 30.03.2009
Сообщений: 14,363
Записей в блоге: 26
20.08.2013, 13:08     реализация класса в .h файле хорошо или плохо?
Цитата Сообщение от Убежденный Посмотреть сообщение
Кстати, на 32-битной машине я с помощью LTCG на этом же тесте получил еще больший прирост - порядка 25%
Без конкретного анализа конкретного бинарника тут сказать что-то сложно. На ум приходят две вещи, благодаря которым в конкретно данном тесте есть профит от LTGC:
- в этом режиме более агрессивно работает инлайн (или какие-то дополнительные оптимизации)
- библиотеки stl поставляются с сохранённым промежуточным представлением.
Других вариантов, почему межмодульные оптимизации имеют эффект на исходнике из одного модуля, я не вижу.

Цитата Сообщение от Убежденный Посмотреть сообщение
В этом тесте отсутствует главное - доказательство того, что реализация в заголовках приводит к генерации более быстрого кода
Я же всё написал. В gcc подаём опцию -fno-inline, после чего мы начинаем работать так же, как если бы методы были реализованы в другом файле. То, что они реализованы и скомпилированы в этом файле, принципиально не отличается, как если бы их код подцепился из другого файла (потому что не один ли фиг из какого места подцепится один и тот же код при линковке).

Естественно, эксперимент на на 100% "чистый", т.к. при реализации в библиотеке могли бы быть использованы другие оптимизации, при реализации в библиотеке была бы совсем другая раскладка по взаимному положению функций (и, соответственно, нагрузке на кэш), но вся это разница - доли процента или проценты. На фоне того, как у нас разница в производительности была в разы

Цитата Сообщение от Убежденный Посмотреть сообщение
И это хитро, потому что STL, как и надлежит шаблонным классам, реализована в
заголовках, и подтвердить или опровергнуть обратное, используя код STL, не
представляется возможным
Я уже писал, что любой пользовательский класс почти наверняка будет использован в совокупности с контейнерами или ещё какими шаблонами из STL. И именно в этом месте инлайн даст огромное преимущество. Преимущество будет в том числе и без работы с STL, но чем меньше размер паровоза из всяких шаблонов, тем меньше будет разница между наличием и отсутствием инлайна. Примитивный пример напишу чуть позже
 
Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru