Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> какая линковка длл быстрее? 
:(
    Опции темы
deniska
Дата 3.8.2005, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 0



народ, у меня такой вопрос.
в каком случае работа приложения будет быстрее:
1.когда приложение статически подключает длл
2. динамически (GetProcAddress, LoadLibrary)

приложение подключает одну длл а та, в свою очередь еще 2.

надо выиграть во времени ОЧЕНЬ!!!!
PM MAIL ICQ   Вверх
Nemesis
Дата 3.8.2005, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 5



В 1ом случае, поскольку при динамическом пользовании длл она будет загружаться и выгружаться часто(по мере необходимости). Так что если размер приложения не столь важен, то грузи все длл статически.
--------------------
PM MAIL   Вверх
Nastya
Дата 5.8.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



Цитата
В 1ом случае, поскольку при динамическом пользовании длл она будет загружаться и выгружаться часто(по мере необходимости). Так что если размер приложения не столь важен, то грузи все длл статически.

Я в этом не уверена.
Когда ты делаешь LoadLibrary - она загружается и не выгрузится пока не осоводишь сам.
Это в случае отложенной загрузки может быть.
Лично мне, КАЖЕТСЯ, что загрузка рабоатть будет одинаково. Может токлько притормаживать на GetProcAdderss хотя не уверена.


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
ManiaK
Дата 5.8.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Цитата(Nastya @ 5.8.2005, 11:38)
Может токлько притормаживать на GetProcAdderss хотя не уверена.

Думаю разницы никакой. Можно было бы подумать, что при предкомпилированном прикреплении запоминается адрес процедуры и не тратися время на поиск, но это не так. Проверяется просто: берём программу с библиотекой, к которым есть исходники. Переписываем библиотеку так, что процедуры будут иметь теже имена, но находится по совершенно другим адресам. Компилируем, запускаем - работает!..
PM MAIL WWW   Вверх
Earnest
Дата 6.8.2005, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нет никакой разницы. Если взять системную DLL предыдущей версии (скажем, от Win95) и подсунуть ее программе, использующей какие-либо функции NT...XP, то программа будет орать на загрузке, что ей для счастья не хватает такой-то функции (и по-моему даже GetProcAddress там упоминается). В общем, ровно через GetProcAddress или аналогичную функцию все ссылки и разрешаются при загрузке DLL: либо ты сам пишешь этот код, либо линкер генерирует таблицу, по которой все ссылки разрешаются стандартным кодом (а может, не линкер, не знаю). Использовать загрузку "вручную" неудобно - если функций много, да еще классы используются (там имена разукрашенные - черт ногу сломит). Да и поддерживать умаешься. Это имеет смысл только в одном случае: если есть набор DLL с одинаковым интерфейсом, из которых нужно выбрать в зависимости от контекста. Но тогда имеет смысл ограничить интерфейс до 1-2-3 функций, а все остальное крутить через них.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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