|
TLB vs Declare
|
|||
---|---|---|---|
#18+
Имеют ли преимущество в скорости вызова API функции находящиеся в TLB перед описанными через Declare? По идее секция импорта должна давать некие преимущества, хочу понять имеет ли смысл перетащить в TLB все функции в проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 12:25 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
При декларации в tlb скорость вызова немного выше. Но т.к. функции попадают в импорт приложение может не запустится если не будет нуж6ого модуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 12:50 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
ATM-TURBO 2При декларации в tlb скорость вызова немного выше. Это понятно. Но скорость вызова будет выше один раз, или каждый раз при вызове функции из DLL? Как говорят в Одессе это две большие разницы. Мне непонятно как происходит вызов DLL через Declare она грузится с диска при первом обращении к функции а потом висит в памяти, или загрузка идет каждый раз, какой-то вариант LoadLibrary/FreeLibrary ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 13:12 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
каждый раз висит в памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 13:21 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
Каждый раз. При вызове через декларирование в tlb происходит прямой непосредственный вызов и ничего более. При вызове через declare происходит сначала проверка была ли инициализирована специальная структура содержащая адрес api функции, потом происходит сам вызов. После возврата из функции происходит вызов функции рантайма __vbaSetSystemError которая устанавливает значение переменной члена Err.LastDllError. Фактически каждый вызов функции транслируется в 2 вызова. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 13:31 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
Загрузка dll происходит один раз и в том и в другом случае. Просто при декларировании в tlb загрузка происходит на этапе инициализации процесса, при отсутствии нужного модуля появляется стандартное сообщение об отсутствии модуля (например при декларации в tlb можно безопасно вызывать api в многопоточной приложении без инициализации, например так я делал драйвер режима ядра на вб). При использовании declare загрузка происходит при первом вызове. Если dll отсутствует, то ошибку можно перехватить и например выполнить альтернативную функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 13:37 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
Ну если каждый раз, тогда дейстивтельно имеет смысл переносить описание API функций в TLB ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 13:43 |
|
TLB vs Declare
|
|||
---|---|---|---|
#18+
Вот к примеру, явный кандидат на перенос в TLB Код: vbnet 1. 2. 3. 4.
Если даже на 10% станет работать быстрее, это уже круто ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 16:12 |
|
|
start [/forum/topic.php?fid=60&msg=38998066&tid=2155875]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 154ms |
0 / 0 |