Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Forward Declaration / Forward Reference, и увеличение скорости скомпиляции... 
V
    Опции темы
J0ker
Дата 22.4.2009, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



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


--------------------
user posted image
PM MAIL   Вверх
SABROG
Дата 22.4.2009, 08:32 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  22.4.2009,  00:16 Найти цитируемый пост)
Тогда как первом случае в каждый cpp-шних будут включены в каждый все 100, а во 2м также по 2-4 хидера smile
Чтоб лучше представить, на 2й вашей картинке только две линии  про cpp-юнит оставьте. 


Теперь я понял, как-раз о такой структуре модулей я вопрашал создавая эту тему. Т.е. единственный правильный вариант при котором можно добиться оптимизации

user posted image

Цитата(J0ker @  22.4.2009,  00:43 Найти цитируемый пост)
абсолютно соглаен, что выигрыш в парсинге
никакого выигрыша в самой компиляции не получится
просто не ожидал такой большой разницы... 

А разве выйгрыш в скорости парсинга как следствие не дает выйгрыш в скорости компиляции?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 22.4.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  22.4.2009,  07:32 Найти цитируемый пост)
Теперь я понял, как-раз о такой структуре модулей я вопрашал создавая эту тему. Т.е. единственный правильный вариант при котором можно добиться оптимизации

Да.. только не обязательно чтоб от cppшника была только одна линия. Главное, чтоб не было включено ничего лишнего. И из за "необработки"  это лишнего и будет экономия smile

Добавлено через 5 минут и 24 секунды
Цитата(SABROG @  22.4.2009,  07:32 Найти цитируемый пост)

А разве выйгрыш в скорости парсинга как следствие не дает выйгрыш в скорости компиляции?

тут игра слов, зависит от точки зрения,  что именно считать компиляцией. Весь этап от вместе с чтением, парсингом  и препроцессором или чисто компиляцию.
И к тому же _скорость_ компиляции остается вообще без изменения. Изменяется объем компиляции и, как следствие, _время_ компиляции.  smile 


--------------------
PM MAIL WWW   Вверх
SABROG
Дата 22.4.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  22.4.2009,  08:51 Найти цитируемый пост)
тут игра слов, зависит от точки зрения,  что именно считать компиляцией. Весь этап от вместе с чтением, парсингом  и препроцессором или чисто компиляцию.
И к тому же _скорость_ компиляции остается вообще без изменения. Изменяется объем компиляции и, как следствие, _время_ компиляции.


Значит, если говорить об "общем времени компиляции", то выйгрыш будет? Должен ведь быть smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Earnest
Дата 22.4.2009, 09:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Освобождение от лишних зависимостей (включая использование forward declarations вместо полных инклудов) - это очень хорошая привычка, полезность которой весьма заметна на больших проектах. Если у вас три с половиной файла, которые сильно между собой связаны, то разницы вы не увидите. Но привычку надо вырабатывать - будут и большие проекты. Сильные зависимости плохи не только для скорости компиляции (в конце концов, мощность машин растет). Гораздо сильнее они мешают при внесении изменений в дизайн. Поэтому нужно просто привыкнуть делать все так локально как только возможно. Кроме прочего, получите еще и лучший дизайн, если избавитесь от привычки подключать все, что в голову пришло.


--------------------
...
PM   Вверх
mes
Дата 22.4.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  22.4.2009,  08:15 Найти цитируемый пост)
начит, если говорить об "общем времени компиляции", то выйгрыш будет? Должен ведь быть smile 

 smile 

Earnest,  smile 


--------------------
PM MAIL WWW   Вверх
math64
Дата 22.4.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Код

// a.h
class A {
};
// b.h
class A;
class B {
A* a;
public:
B();
};
// b.cpp
#include "a.h"
#include "b.h"
B::B() { a = new A(); }
// c.h
class B;
class C {
B* b;
public:
C();
};
// c.cpp
// #include "a.h" // не нужен
#include "b.h"
#include "c.h"
C::C() { b = new B(); }


PM   Вверх
J0ker
Дата 22.4.2009, 16:18 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Earnest @  22.4.2009,  09:17 Найти цитируемый пост)
включая использование forward declarations вместо полных инклудов

ну тут и свои минусы есть
например в VS "Go to Definition" отправит вас к forward declaration, а не туда куда нужно


--------------------
user posted image
PM MAIL   Вверх
zim22
Дата 22.4.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(J0ker @  22.4.2009,  16:18 Найти цитируемый пост)
например в VS "Go to Definition" отправит вас к forward declaration, а не туда куда нужно

а если Visual Assist подключить?


--------------------
PM MAIL   Вверх
J0ker
Дата 22.4.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(zim22 @ 22.4.2009,  16:27)
Цитата(J0ker @  22.4.2009,  16:18 Найти цитируемый пост)
например в VS "Go to Definition" отправит вас к forward declaration, а не туда куда нужно

а если Visual Assist подключить?

не знаю не пользовался, но подозреваю что не поможет, т.к. это не глюк, а формально правильное поведение - forward declaration и реалюное объявление - формально разные типы


--------------------
user posted image
PM MAIL   Вверх
Любитель
Дата 22.4.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Как раз правильней различать Declaration и Definition ;)


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 22.4.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Любитель @ 22.4.2009,  19:08)
Как раз правильней различать Declaration и Definition ;)

все претензии к VS - в случае не включения хедеров в проект она видит только forward declaration в обоих случаях (что, впрочем, и понятно)

Это сообщение отредактировал(а) J0ker - 22.4.2009, 19:36


--------------------
user posted image
PM MAIL   Вверх
Alek86
Дата 22.4.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



J0ker, помогает
сначала идет к объявлению, а по второму нажатию - к определению


--------------------
user posted image    user posted image
PM MAIL   Вверх
Любитель
Дата 22.4.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(J0ker @  22.4.2009,  19:32 Найти цитируемый пост)
все претензии к VS

Я не против. Просто я к тому, что это логически не правильно - это баг строо говоря.


--------------------
PM MAIL ICQ Skype   Вверх
J0ker
Дата 22.4.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Alek86 @ 22.4.2009,  19:41)
J0ker, помогает
сначала идет к объявлению, а по второму нажатию - к определению

только если у вас оба хедера включены (прямо или косвенно) в проект, и InteliSense еще не переклинило (что на больших и не очень проектах бывает с ним довольно часто)

Добавлено через 14 минут и 27 секунд
Цитата(Любитель @ 22.4.2009,  19:46)
Цитата(J0ker @  22.4.2009,  19:32 Найти цитируемый пост)
все претензии к VS

Я не против. Просто я к тому, что это логически не правильно - это баг строо говоря.

не понял
где баг?
я хочу посмотреть на определение и жму на "Go to Definition" а попадаю на forward declaration
я-то тут при чем

Это сообщение отредактировал(а) J0ker - 22.4.2009, 19:54


--------------------
user posted image
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.