powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Вопрос по IBEScript.dll
10 сообщений из 10, страница 1 из 1
Вопрос по IBEScript.dll
    #38978050
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью IBEScript.dll нужно выполнить более тысячи отдельных скриптов.
Выполняю без переконнекта т.е. указываю disconnect=manual.
Если предварительно объединяю скрипты в большие блоки, все работает ОК, но сложно отследить в каком файле ошибка.
Если выполняю скрипты отдельными вызовами ExecScriptText, к средине выполнения производительность катастрофически проседает, на несколько порядков. Профайлер показывает 100% загрузку процессора в IBEScript.dll.
Можно ли исправить?
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978052
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен пример скрипта. Любой скрипт что-ли, будучи выполнен тыщу раз подряд, приводит к 100% загрузке?
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978208
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,
Да в общем то любой. Вот набросал простой пример и получил время
500 отдельных вызовов - 583 тика
объединяю их в одну строку и вызываю - 17 тиков
Т.е. разница в 30 раз, причем она растет в прогрессии.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978211
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertприводит к 100% загрузке?
Речь не о 100% загрузке, а о катастрофическом падении производительности при многократных вызовах ExecScriptText.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978306
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты меня запутал.
То, что сотни последовательных вызовов ExecScriptText на порядок-другой медленнее одного-единственного - это нормально. Каждый раз происходит инициализация и финализация скриптера, а manual disconnect означает лишь то, что по окончании вызова ExecScriptText коннект не будет закрыт и все.
Сам коннект живет отдельно, и при следующем вызове ExecScriptText просто подключается к скриптеру.

Сливай все в один файл перед выполнением, если время критично.
Что мешает при сборке скриптов в один файл добавлять комментарии с именем файла?

Либо собирай отдельный скрипт с INPUT и выполняй его.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978330
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertТо, что сотни последовательных вызовов ExecScriptText на порядок-другой медленнее одного-единственного - это нормально. Каждый раз происходит инициализация и финализация скриптера,
Печально, там разница не менее 2 порядков. Он при инициализации метаданные перечитывает? Потому что первые вызовы идут быстро, а чем дальше тем медленнее.
IBExpertЧто мешает при сборке скриптов в один файл добавлять комментарии с именем файла?
То, что при ошибке, я вижу только последний запрос с ошибкой, а не комментарий. Можно было бы, привязать имя файла к номеру строки, но номеров строк с ошибкой тоже нет.
Есть рекомендации?
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978394
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TruhinПечально, там разница не менее 2 порядков. Он при инициализации метаданные перечитывает? Потому что первые вызовы идут быстро, а чем дальше тем медленнее.


Метаданные он не перечитывает - они ему попросту не нужны.
17 и 583 - это тики или все же секунды? Если секунды, то что-то действительно многовато. Надо смотреть.

Alex TruhinТо, что при ошибке, я вижу только последний запрос с ошибкой, а не комментарий. Можно было бы, привязать имя файла к номеру строки, но номеров строк с ошибкой тоже нет.
Есть рекомендации?

Здесь в AText есть номер строки:
TScriptBeforeExecStatementFunc = function (AStmtText, AText : PChar) : integer;

Про INPUT я уже сказал, в этом случае получишь имя файла сразу, без нахлобучивания комментариев и сопоставления номеров строк.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978507
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert17 и 583 - это тики или все же секунды?
Это тики деленные на 100. Причем при 500 вызовах разница 34 раза,
при 1500 вызовах получаем время 59 и 5001 т.е. разница 85 раз и т.д. в прогрессии (вот эта прогрессия меня и смущает).

IBExpertЗдесь в AText есть номер строки: TScriptBeforeExecStatementFunc = function (AStmtText, AText : PChar) : integer;
У меня нет номеров строк. Обновил только что IBEScript.dll, проверил все два раза.

IBExpertПро INPUT я уже сказал, в этом случае получишь имя файла сразу, без нахлобучивания комментариев и сопоставления номеров строк.
Это понятно. Похоже, единственный вариант.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38978608
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел проблему. Попробуй свежую версию.
...
Рейтинг: 0 / 0
Вопрос по IBEScript.dll
    #38979549
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все ОК. Разница примерно в 3 раза. Вполне устраивает. Спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Вопрос по IBEScript.dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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