Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

частый вызов DLL   Найти похожие ветки 

 
Lena19   (2004-03-11 23:09) [0]

всем привет
у меня вопрос, емеет ли смысл
выносить функцию в DLL  если ета функция
используется в приложении очень часто (милионы раз)
или лучше оставить в основном пректе
как будет быстрее работать прога ?


 
VMcL ©   (2004-03-11 23:11) [1]

>>Lena19  (11.03.04 23:09)

Функция линкуется статически или динамичеески?


 
Lena19   (2004-03-11 23:17) [2]

TO VMcL
я чтото не поняла
DLL сама посабеже динамическая
---- можно по подробнее ? -------


 
Thomas Brandon   (2004-03-11 23:23) [3]


> Lena19  
Сударыня, существует два способа загрузки DLL: явная (implicit) и неявная (explicity). Какая применена у Вас?


 
Алхимик ©   (2004-03-11 23:24) [4]

> Функция линкуется статически или динамичеески?
Для понимания
http://www.delphimaster.ru/articles/usedll/index.html


 
Гаврила   (2004-03-11 23:26) [5]

DLL сама по себе не может быть статической или динамической
весь вопрос в том, как Вы ее грузите
после того, как Вы единажды получили указатель на точку входа в процедуру(функцию), разницы, имхо, нет никакой
и не важно, поручили ли вы это компилятору (external), или же сами получили указатель (GetProcAddress)


 
VMcL ©   (2004-03-11 23:26) [6]

статически:
procedure xyz; external "some.dll" name "xyz";

динамичеески:
var
 xyz: procedure;
// ...
 @xyz := GetProcAddress(...);

В первом случае будет call $87654321 на косвенный JMP вида:
jmp dword ptr [$12345678]
где $12345678 - адрес функции в DLL

Во втором случае:
просто косвенный call вида
call dword ptr [$abcdef01]
где $abcdef01 - адрес переменной xyz

В общем разница, по сравнению с функцией в EXE очень незначительная.


 
VMcL ©   (2004-03-11 23:29) [7]

Sorry.

В первом случае будет call $87654321 на косвенный JMP вида:
jmp dword ptr [$12345678]
где $87654321 - адрес вышеуказанного JMP, а $12345678 - адрес переменной, хранящей адрес функции из DLL.


 
Lena19   (2004-03-11 23:37) [8]

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


 
evvcom   (2004-03-11 23:56) [9]

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


 
Юрий Зотов ©   (2004-03-12 05:00) [10]

> Lena19всем привет

Есть смысл выносить функцию в DLL, если этв функция используется НЕСКОЛЬКИМИ Вашими программами. Это и есть основная идея DLL - сокращение объема программ за счет совместно используемых ими библиотек.

Если же функция используется только одной программой - то не только нет смысла, но и даже вредно (получите накладные расходы и никаких преимуществ).



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
4-1069066970
Gilk
2003-11-17 14:02
2004.03.28
Показ главного окна запущенного приложения


14-1078193323
ИМХО
2004-03-02 05:08
2004.03.28
Знатокам футбола: куда делся бразилец Марио Жардел???


8-1069320483
_ncux_
2003-11-20 12:28
2004.03.28
Как сделать свою прогу скрин-сейвером?


3-1077339999
Sirus
2004-02-21 08:06
2004.03.28
Можно ли выбрать в таблице записи у которых какое-либо поле NULL?


14-1077793338
Vik_Mix
2004-02-26 14:02
2004.03.28
Где скачать эмулятор К580





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский