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

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

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


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

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

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

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

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

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


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