forum.bitel.ru
http://forum.bitel.ru/

[5.2] Вывод результатов в управлении дин. кодом.
http://forum.bitel.ru/viewtopic.php?f=22&t=8157
Страница 1 из 1

Автор:  Phricker [ 17 июн 2013, 14:33 ]
Заголовок сообщения:  [5.2] Вывод результатов в управлении дин. кодом.

Код:
Информация о версии:
  Клиент: вер. 5.2 сборка 1169 от 29.04.2013 19:05:29
    os: Windows 8; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
  Сервер: вер. 5.2 сборка 1487 от 26.04.2013 16:34:20
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_37


Проблема в следующем.
Есть скрипт, который я запускаю через управление дин.кодом. В вывод результатов попадает что-то около 5000-6000 строк.

Клиент биллинга долго отрисовывает окно с результатами выполнения скрипта.
Это заметно по изменению формы курсора. Когда скрипт выполняется - курсор в виде стрелочки.
При отрисовывании окна - курсор выглядит будто я что-то печатаю (выделяю текст).

Если этот же код запустить через глобальные скрипты поведения (классы Java), то окно с результатами появляется примерно сразу же как завершается выполнение скрипта. +/- 1-2 секунды.

И еще замечание. Если запускать через классы Java в глобальных скриптах поведения - окно клиента виснет до тех пор, пока не закончится выполнение скрипта. При выполнении же через Скрипты BGBS в глобальных скриптах - появлялось окно "Скрипт выполняется. Результаты смотрите в логах". И можно было продолжать работать.

Автор:  dimOn [ 17 июн 2013, 14:55 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

Т.е. выполняется сразу, а рисует долго?

Цитата:
И еще замечание. Если запускать через классы Java в глобальных скриптах поведения - окно клиента виснет до тех пор, пока не закончится выполнение скрипта. При выполнении же через Скрипты BGBS в глобальных скриптах - появлялось окно "Скрипт выполняется. Результаты смотрите в логах". И можно было продолжать работать.
В этом и был смысл - синхронное выполнение/вывод как в иде. Для отладки только и не более. Асинхронно сделать ну никак не получится, т.к. выполняется на сервере ведь. И выполняется по другому.
Т.е. надо убрать отсюда окошко и тоже рисовать потом как-нибудь, как всё завершится?

Автор:  Phricker [ 17 июн 2013, 15:30 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

dimOn писал(а):
Т.е. выполняется сразу, а рисует долго?

Именно.
Запустил только что через динкод, выполнялось секунд 20, а результаты не появляются уже минут 5.

Цитата:
рВ этом и был смысл - синхронное выполнение/вывод как в иде. Для отладки только и не более. Асинхронно сделать ну никак не получится, т.к. выполняется на сервере ведь. И выполняется по другому.
Т.е. надо убрать отсюда окошко и тоже рисовать потом как-нибудь, как всё завершится?

Ну тогда и не суть важно. Его в любом случае используют только для отладки.

upd: появилось ~ через 6-7 минут после старта.

Автор:  dimOn [ 17 июн 2013, 16:11 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

хм, не очень понятно почму так долгоу... возврат долгий результата или как? там просто после выполнения возвращается результат и всё.

Автор:  dimOn [ 17 июн 2013, 17:40 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

там, конечно, форматирование через html так что скорее всего на огромных документах просто тупо тормозит. но как избежать этого я даже не знаю...

Автор:  Phricker [ 17 июн 2013, 17:43 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

Угу. Я тоже проверил на простом выводе - выводит практически моментально.
На более сложном где дофига текста - выводит как я уже сказал, достаточно долго.
Просто было непонятно почему через глобальные скрипты выводит как и положено, а через дин.код все гораздо дольше.

В любом случае это не постоянные случаи так что если невозможно избежать - пускай будет :)

Автор:  dimOn [ 17 июн 2013, 17:50 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

проверил кодом, выводит сразу...
Код:
package foo.bar;

public class Test5000
{
   public static void main( String[] args )
   {
      for( int i=0; i<5000; i++ )
      {
         System.out.println("line"+i);
      }
   }
}

Автор:  dimOn [ 17 июн 2013, 17:55 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

код такой даёт довольно громоздкий html но тоже довольно быстро рендерится) но памяти слегка отжирает, да. может выделить побольше?
Код:
public class Test5000
{
   public static void main( String[] args )
   {
      for( int i=0; i<5000; i++ )
      {
         System.out.print("l");System.err.print("i");System.out.print("n");System.err.print("e");System.out.println(i);
      }
   }
}

Автор:  Phricker [ 17 июн 2013, 18:08 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

Проверял вот таким кодом.
Код:
package ru.ellcom.test;

import java.sql.*;
import java.util.Date;

import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;


public class testDimon
   extends GlobalScriptBase
{
      
   @Override
   public void execute( Setup setup, ConnectionSet connectionSet )
      throws Exception
   {
      Connection con  = connectionSet.getConnection();
      
      String query = "SELECT id FROM contract";
      java.sql.PreparedStatement ps = con.prepareStatement( query );
      ResultSet rs = ps.executeQuery();
      Date newDate = new Date();
      while ( rs.next() )
      {            
         int id = rs.getInt(1);
         print("Договор с id = " + id + " был замечен за неправомерными действиями в месяце " + newDate );
      }
   }
}


Результаты в видео http://www.youtube.com/watch?v=6N-fbU5yulA
Причем оно до сих пор еще не вывелось в дин.коде. Хотя прошло уже минут 4-5

Через глобальные скрипты вывелось практически моментально, даже учитывая что это тестовый сервер.
А через дин.код - сами понимаете :)

Автор:  dimOn [ 17 июн 2013, 18:19 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

600 договоров у меня в БД - мгновенно вывело )

Автор:  dimOn [ 17 июн 2013, 18:21 ]
Заголовок сообщения:  Re: [5.2] Вывод результатов в управлении дин. кодом.

скопипастил код 10 раз подряд - секунд 20 и вывело. так что могу заключить, что УМВР :umnik:

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/