Форум: "Основная";
Текущий архив: 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