Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [MiniM] Как можно ускорить XMLHttpRequest? / 21 сообщений из 21, страница 1 из 1
03.12.2015, 13:27
    #39119380
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Примерно 600 миллисекунд уходит на то чтобы принять из CACHE (MINIM)
простую текстовую строку длиной до 1000 байт через XMLHttpRequest.

Как можно ускорить?var xhr=new XMLHttpRequest();

xhr.open('GET',mConnect,false); 
xhr.send(null); 
res=xhr.responseText;
...
Рейтинг: 0 / 0
03.12.2015, 14:02
    #39119438
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9,

От задачи зависит. Если это передача большого объёма данных, то хороший эффект может дать собственная буферизация в строку длиной ~ 32K-128K.
Т.е. "классический" код:writerecord(record)
  write record
  quitможет работать в 1.5-2 раза медленнее, чем код, использующий собственную буферизацию:writerecord(record,buffer)
  s buffer=$g(buffer),lsum=$l(buffer)+$l(record)
  if lsum<$$$BUFFERSIZE set buffer=buffer_record quit
  if lsum'>$$$MAXSTRLEN write buffer_record set buffer="" quit
  write buffer,record set buffer=""
  quitФайл открывался в обоих случаях с опциями "WU". Лишние системные вызовы оказались значительно дороже лишних M-команд (в разумных пределах, конечно). Думаю, что при обмене через сокет можно ожидать аналогичного эффекта.
...
Рейтинг: 0 / 0
03.12.2015, 14:20
    #39119462
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9 ,

Как ускорить работу объекта XmlHttpRequest

PS: вебсокеты пробовали?
...
Рейтинг: 0 / 0
03.12.2015, 15:08
    #39119532
Timur Safin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Accept-Encoding: gzip, deflate

Например
...
Рейтинг: 0 / 0
03.12.2015, 15:17
    #39119551
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Timur SafinAccept-Encoding: gzip, deflate

Напримертогда наверно иClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
  s %response.GzipOutput=1
  q 1
}
...
Рейтинг: 0 / 0
03.12.2015, 15:28
    #39119577
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9Примерно 600 миллисекунд уходит на то чтобы принять из CACHE (MINIM)
простую текстовую строку длиной до 1000 байт через XMLHttpRequest.
Когда речь о производительности запросов, здесь очень и очень много факторов которые могут на это влиять
сразу нужно вспоминать, о том что вы не первый кто об этом задумался, и у нас уже есть много инструментов позволяющих это мерять.

со стороны браузера, есть Navigation Timing API, тут есть примеры как мерить

потом, можно померить сколько времени было затрачено именно на стороне Cache. Далее, вместе с веб-сервером, а вместе с сетевыми задержками это уже браузер
можно уще воспользоваться cURL, чтобы в консоли смотреть время выполнения запросов.
...
Рейтинг: 0 / 0
03.12.2015, 15:55
    #39119609
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Спасибо за наводки !

(правда МИНИМ не имеет всех упомянутых системных программ)

длинные строки проходят нормально -
при длине более 6000 задержка не 600,
а 60 примерно на самых тупых компах,
на более продвинутых - около 5 миллисекунд.

проблема только с короткими строками (!)
...
Рейтинг: 0 / 0
03.12.2015, 16:05
    #39119617
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9на то чтобы принять из CACHE (MINIM)Так Caché или MINIM?
...
Рейтинг: 0 / 0
03.12.2015, 17:03
    #39119716
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
servit,

MUMPS код один и тот же и в CACHE и в MINIM
(кроме команд OPEN и USE ).

в обоих случаях КОРОТКИЕ строки передаются клиенту
намного медленнее (600 ms) чем длинные (5...60 ms) .

клиенты : Windows-8, IE-10 , IE-11 , 32 или 64 бит.


Строки просто читаются из глобалов.
затем
write webTitle,str,*-3

в заголовке webTitle
среди прочего указана и длина строки.
...
Рейтинг: 0 / 0
03.12.2015, 17:21
    #39119731
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9 ,

Решение проблемы может отличаться в Caché и MiniM.
Поэтому и хотелось уточнить, что для Вас приоритетней, учитываяMX-9правда МИНИМ не имеет всех упомянутых системных программ
...
Рейтинг: 0 / 0
03.12.2015, 17:35
    #39119756
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
servit,

и то, и то,

и можно без хлеба :)
...
Рейтинг: 0 / 0
03.12.2015, 18:10
    #39119791
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9write webTitle,str,*-3
в заголовке webTitle
среди прочего указана и длина строки.Такое впечатление, что срабатывает алгоритм Nagle : "поступило слишком мало данных, подождём, когда капнут ещё".
Не действует ли опция /NODELAY=0? По умолчанию в Cache /NODELAY=1, вообще-то. См. OPEN and USE Command Keywords for TCP Devices

Если нет, м.б. стоит попробовать изменить алгоритм обмена так, чтобы (как уже говорил) предварительно накапливать строки в собственном буфере приемлемой длины, и выводить в сокет уже его.
...
Рейтинг: 0 / 0
03.12.2015, 18:27
    #39119808
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Alexey Maslov,

да - очень похоже
и в интернете гутарят про то же.

вопрос - почему "win - составитель tcp-поездов" игнорит установку по умолчанию в CACHE ?

как временная мера - добавляю коротким строкам 6000 нулей - CACHE летает :)
но это так - шоферские байки
надо сделать правильно.

агрегировать несколько ответов не могу - клиенту надо здесь и сейчас -
он, например, вводит данные со сложной синхронной многофакторной проверкой.

все что можно сагрегировать - уже сагрегировано до нас... :)
...
Рейтинг: 0 / 0
03.12.2015, 18:50
    #39119828
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9,

попробуй Gaming Tweak - Disable Nagle's algorithm (сам не пробовал, за последствия не отвечаю ))).
...
Рейтинг: 0 / 0
04.12.2015, 10:39
    #39120198
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
MX-9вопрос - почему "win - составитель tcp-поездов" игнорит установку по умолчанию в CACHE ?Возможно дело в версии Caché (и/или CSP-Gateway)?

Проверил в Caché 2016.1 скорость между двумя физическими машинами по локальной сети: маленькие пакеты летают (~5ms).
Код REST-приложенияClass sqlru.rest Extends %CSP.REST
{

Parameter CHARSET = "UTF-8";

Parameter CONTENTTYPE = {..#CONTENTTYPETEXT};

Parameter CONVERTINPUTSTREAM = {$$$YES};

Parameter UseSession As BOOLEAN = {$$$YES};

XData UrlMap [ XMLNamespace = " http://www.intersystems.com/urlmap"  ]
{
<Routes>
<Route Url="/test/:i" Method="GET" Call="Test"/>  
<Route Url="/" Method="GET" Call="MainPage"/>  
 </Routes>
}

ClassMethod Test(i) As %Status
{
  w "asd"_i
  q $$$OK
}

ClassMethod MainPage() As %Status
{
  #dim %response As %CSP.Response
  s %response.ContentType="text/html"
  &html<<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <script type="text/javascript">
    function test()
    {
      var xhr=new XMLHttpRequest();

      var res;
      
      var N=100;
      var start=new Date();
      
      for(var i=0;i<N;i++) {
        xhr.open('GET','test/'+i,false); 
        xhr.send();
        res=xhr.responseText;  
      }    
      alert('Последний результат = '+res+'\nВремя одной итерации ~ '+((new Date()-start)/N).toPrecision(4)+' мс.');
    }
  </script>
  </head>
  <body><button onclick="test()">Запустить</button></body>
</html>>
  q $$$OK
}

}

Результат:

Код: plaintext
1.
Последний результат = asd99
Время одной итерации ~ 4.840 мс.
При больших пакетах w "asd"_$tr($j("",6000)," ","0")_i скорость понижается ненамного
Код: plaintext
Время одной итерации ~ 7.500 мс.

PS: реестр не менялся на обеих машинах.
...
Рейтинг: 0 / 0
04.12.2015, 11:21
    #39120249
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Кстати, включить/отключить алгоритм Nagle можно и в самом CSP шлюзе:CSP.ini
Код: plaintext
1.
2.
3.
...
[SYSTEM]
Nagle_Algorithm=Disabled (или Enabled)
...
А посмотреть его текущее состояние можно в CSP.log.
...
Рейтинг: 0 / 0
04.12.2015, 13:12
    #39120454
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
servitКстати, включить/отключить алгоритм Nagle можно и в самом CSP шлюзе:В версии 2015.1 в CSP.ini такого параметра не вижу, при этом в CSP.log: Nagle_Algorithm=Disabled.
Судя по всему, это умолчание, к тому же, не найдя описания, рискну предположить, что он, как и другие параметры СSP-шлюза, влияет на его поведение как клиента по отношению к Cache.
А MX-9 явно испытывает проблемы на стороне сервера.

P.S. О CSP-шлюзе
Версия: 2015.1.2.607.0.15502
№ билда шлюза: 1501.1472
...
Рейтинг: 0 / 0
04.12.2015, 13:52
    #39120524
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Alexey MaslovВ версии 2015.1 в CSP.ini такого параметра не вижу, при этом в CSP.log: Nagle_Algorithm=Disabled.
Судя по всему, это умолчаниеИменно так.
Alexey Maslovрискну предположить, что он, как и другие параметры СSP-шлюза, влияет на его поведение как клиента по отношению к Cache.Если CSP-шлюз и Caché на разных машинах, то может иметь влияние.
Alexey MaslovА MX-9 явно испытывает проблемы на стороне сервера.Кстати, у меня и с включённым Nagle_Algorithm=Enabled результаты хорошие.

PS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД.
...
Рейтинг: 0 / 0
04.12.2015, 15:12
    #39120672
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
servitPS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД....а также не в шлюзе, т.к. MiniM его не использует.
...
Рейтинг: 0 / 0
04.12.2015, 15:26
    #39120700
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Alexey Maslov.а также не в шлюзе, т.к. MiniM его не использует.Да.

PS: разнёс браузер+Caché и Apache+CSP-Gateway по разным машинам: скорость хорошая вне зависимости от Nagle_Algorithm и размера пакета (~14 мс.).
...
Рейтинг: 0 / 0
15.12.2015, 17:00
    #39128850
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MiniM] Как можно ускорить XMLHttpRequest?
Alexey MaslovservitPS: то что проседание наблюдается помимо Caché и в MiniM, наводит на мысль, что дело не в настройках СУБД....а также не в шлюзе, т.к. MiniM его не использует.

Заработало !

программить надо "тщательнЕе".
из-за некорректного перехвата ошибок иногда job закрывался аварийно
и без соответствующих манипуляций.
Взамен открывался новый, получал по эстафете почти все, что надо,
поэтому программист на отладке обрыва не замечал.
Браузер, похоже, реагировал на разрывы снижением скорости.

Спасибо всем Гуру за обсуждение !
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [MiniM] Как можно ускорить XMLHttpRequest? / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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