![]() |
#8 |
Участник
|
решение проблемы запусков 2 runbuf в одном процессе
Идею реализовал и оттестировал. вкратце:
сделал стат методы класса test, из джобиков вызывал testRunBufCS изменяя модификатор client/server метода RunBufT (метод вызывает тестовый runBuf). testRunBufCS1 - серверная реализация тестового механизма для тестирования 2х одновременных серверных исполнений. Результаты одновременного запуска testRunBufCS и testRunBufCS1 в разных клиентах: 1) при запуске тестов с модификаторами server как и ожидалось произошел сбой. 2) в RunBufT ставим модификатор client - при запуске тестов все отработало без ошибок (1 runBuf исполнился в серверном процессе, 2-й в клиентском) Результаты задержек при исполнении runBuf на клиенте: 1) RunBufT на сервере - 18 сек 2) RunBufT на клиенте - 37 сек Т.о. задержка при передаче исполнения клиенту возрастает в 2 раза при данной реализации вызова runBuf. X++: static server void testRunBufCS() { inventTable it; str s; int cnt; ; timeStamp(); while select it { s=test::RunBufT(it.ItemId, it); cnt++; } info(int2str(cnt)); timeStamp(); } X++: static client str RunBufT(str _s, common _c) { str expr; ; expr=@'str convert2(str _s, common _c) { inventTable it = _c; inventItemGroup iig = inventItemGroup::find(it.ItemGroupId); ; return _s+iig.Name; }'; return runbuf(expr,_s,_c); } X++: static server void testRunBufCS1() { inventTable it; str s; int cnt; str expr; ; expr=@'str convert2(str _s, common _c) { inventTable it = _c; inventItemGroup iig = inventItemGroup::find(it.ItemGroupId); ; return _s+iig.Name; }'; timeStamp(); while select it { s=runbuf(expr,it.ItemId, it); cnt++; } info(int2str(cnt)); timeStamp(); } PS: к слову, при реализации RunBufT как static server str RunBufT(str _s, common _c, common _c1, common _c2 ), время выполнеия у меня следующее: 47 / 79 (сервер/клиент соответственно)
__________________
--- SHiSHok |
|