GWT: как измерить производительность клиента и информацию, отправляемую на сервер в случае отключения, с корректным динамическим отображением данных hudge на стороне клиента

#gwt #buffer #client-side #server-side #event-sourcing

#большой объем #буфер #на стороне клиента #серверная часть #источник событий

Вопрос:

я использую rpc с использованием источника событий, мне нужно отправить огромные данные на сторону клиента и измерить производительность и отправить обратно информацию на сторону сервера для корректировки времени задержки (rpc источника событий) в соответствии с измеренной информацией. Как измерить производительность клиента. Как создать буфер на стороне клиента, чтобы на стороне клиента он мог плавно отображать данные (например, значения массива на графике (x, y) (x1, y1) ..) и хранить некоторые данные в своем буфере.

Ответ №1:

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

  1. Клиент запрашивает данные.
  2. Сервер отвечает данными и добавляет к ним метку времени сервера.
  3. Когда клиент заканчивает прием данных, он создает свою собственную временную метку клиента с помощью new Date().getTime() .
  4. Затем клиент начинает вывод полученных данных на экран.
  5. Когда это сделано, создается новая временная метка и вычитается предыдущая временная метка клиента: она получает время рендеринга.
  6. Немедленно отправляет другой запрос на сервер (не обычный запрос данных, а специальный запрос только для измерения) и добавляет к нему время рендеринга и временную метку сервера. Сервер получает данные: предыдущую временную метку сервера и задержку рендеринга клиента.

Теперь он может вычислять сетевую задержку (текущая временная метка сервера — временная метка запуска сервера — задержка рендеринга) / 2.

Задержка настройки, которую вы ищете, — это сетевая задержка задержка рендеринга.

Комментарии:

1. спасибо за ответ, я не уверен, о чем вы говорите, потому что я использую подключаемые модули rpc с источником событий для отправки данных со стороны сервера через определенный период, например, 200 мс, поэтому запроса клиента там нет, также мне нужен буфер на стороне клиента, потому что сервер отправляет много данных (200 мс — это очень быстро), и для отображения данных на графике на стороне клиента мне нужно плавно отображать их на стороне клиента, и вот почему мне нужен буфер на стороне cleint для хранения данных и отображения на графике в формате FIFO и бесперебойной работы…

Ответ №2:

Я предполагаю, что вы оптимизируете свой код на этапе разработки. В этом случае вам следует использовать инструменты браузера для измерения вызовов RPC, синтаксического анализа HTML и рендеринга CSS, такие как Speed Tracer.

Если ваша проблема возникает случайным образом в зависимости от данных, загруженных в вашу производственную систему, вам необходимо настроить код JavaScript вручную или с помощью инструментария gwt-measure или dynatrace AJAX.