powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TLB vs Declare
8 сообщений из 8, страница 1 из 1
TLB vs Declare
    #38997716
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеют ли преимущество в скорости вызова API функции находящиеся в TLB перед описанными через Declare?
По идее секция импорта должна давать некие преимущества, хочу понять имеет ли смысл перетащить в TLB все функции в проекта.
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997762
ATM-TURBO 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При декларации в tlb скорость вызова немного выше. Но т.к. функции попадают в импорт приложение может не запустится если не будет нуж6ого модуля.
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997815
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ATM-TURBO 2При декларации в tlb скорость вызова немного выше.

Это понятно. Но скорость вызова будет выше один раз, или каждый раз при вызове функции из DLL?
Как говорят в Одессе это две большие разницы. Мне непонятно как происходит вызов DLL через Declare она грузится с диска при первом обращении к функции а потом висит в памяти, или загрузка идет каждый раз, какой-то вариант LoadLibrary/FreeLibrary
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997828
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каждый раз
висит в памяти
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997847
ATM-TURBO 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каждый раз. При вызове через декларирование в tlb происходит прямой непосредственный вызов и ничего более. При вызове через declare происходит сначала проверка была ли инициализирована специальная структура содержащая адрес api функции, потом происходит сам вызов. После возврата из функции происходит вызов функции рантайма __vbaSetSystemError которая устанавливает значение переменной члена Err.LastDllError. Фактически каждый вызов функции транслируется в 2 вызова.
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997863
ATM-TURBO 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Загрузка dll происходит один раз и в том и в другом случае. Просто при декларировании в tlb загрузка происходит на этапе инициализации процесса, при отсутствии нужного модуля появляется стандартное сообщение об отсутствии модуля (например при декларации в tlb можно безопасно вызывать api в многопоточной приложении без инициализации, например так я делал драйвер режима ядра на вб). При использовании declare загрузка происходит при первом вызове. Если dll отсутствует, то ошибку можно перехватить и например выполнить альтернативную функцию.
...
Рейтинг: 0 / 0
TLB vs Declare
    #38997873
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если каждый раз, тогда дейстивтельно имеет смысл переносить описание API функций в TLB
...
Рейтинг: 0 / 0
TLB vs Declare
    #38998066
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот к примеру, явный кандидат на перенос в TLB

Код: vbnet
1.
2.
3.
4.
 DestHeight=10000
 For I = 1 To DestHeight
      SetPixelV hDCMemory, 0, I, pvAlphaBlend(oColorEnd, oColorStar, 100)
 Next I



Если даже на 10% станет работать быстрее, это уже круто
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TLB vs Declare
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]