Имя: Пароль:
1C
1С v8
Передача клиент - сервер
,
0 коудманки
 
03.04.17
10:54
Подскажите, от чего зависит скорость передачи между клиентом и сервером

Например массив из 1кк чисел передается туда-сюда примерно за 60 секунд, что мне кажется слишком долгим
(при этом фактически "Клиент" находится на том же самом сервере через рдп):

&НаКлиенте
Процедура Тест(Команда)
    
    к = 1000000;
    м = Новый Массив;
    р = Новый ГенераторСлучайныхЧисел;
    Для _ = 1 По к Цикл
        м.Добавить(р.СлучайноеЧисло(0, 65535));
    КонецЦикла;

    т = ТекущаяУниверсальнаяДатаВМиллисекундах();
    ТестНаСервере(м);
    Сообщить(ТекущаяУниверсальнаяДатаВМиллисекундах() - т);
    
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ТестНаСервере(м)
    //ничего не делает
КонецПроцедуры
1 qeos
 
03.04.17
11:05
60 секунд это при 1Гбит сети получается 125 байт на одно число..
2 Fragster
 
гуру
03.04.17
11:06
(1) там время сериализации/десериализации сопостовимо с временем передачи
3 Fragster
 
гуру
03.04.17
11:07
при этом еще и передается в две стороны (чтобы обратно не передавалось - надо у параметра функции указать ЗНАЧ)
4 RomanYS
 
03.04.17
11:07
(2) +1

У меня 44 сек. При этом в сетевой активности 2 пика общей длительностью не болье 5 сек.
5 lodger
 
03.04.17
11:19
мне вот интересно, а если гнать не Массив, а типизированную ТаблицуЗначений или СписокЗначений?
сериализация типизированных объемов должна происходить несколько шустрее, не?
6 коудманки
 
03.04.17
11:36
СписокЗначений в 2 раза дольше
7 lodger
 
03.04.17
11:39
(6) а тип задавали? число ограничивали по длине, точности?
8 коудманки
 
03.04.17
11:39
а вот передача через чтение - запись временного файла менее секунды
9 Fragster
 
гуру
03.04.17
11:43
(5) сериализуй через сериализатор и посмотри результирующий XML. чем меньше узлов - тем быстрее. всякие кей-валуе хранилища добавляют кучу узлов.
Типизированная ТЗ сопоставима с массивом, но все равно имеет в два раза больше узлов (строка + колонка), но меньше атрибутов (в массиве всегда будет тип значения для каждого значения).
10 Fragster
 
гуру
03.04.17
11:47
вот для реквизитов формы есть прикольные оптимизации на уровне платформы:
http://catalog.mista.ru/public/504141/
работает и для "таблица значений", но там один неверный шаг и вся она будет передаваться целиком.
часто можно вообще не иметь на клиенте больших данных, а хранить их во временном хранилище на сервере. Ну, или наоборот, убрать данные из контекста формы, поместив их в глобальную переменную модуля формы, и передавать на сервер только необходимые куски.
11 коудманки
 
03.04.17
11:55
Главное я понял, у всех так
Способы как обойти я найду
спс
12 коудманки
 
03.04.17
13:52
сериализовал через сериализатор и посмотрел XML

Даже если явно указать тип для списка или таблицы, все равно в каждой строке так же указывается тип.

Быстрее передача не становится

<?xml version="1.0" encoding="UTF-8"?>
<ValueTable xmlns="http://v8.1c.ru/8.1/data/core"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
<column>
<Name>Число
</Name>
<ValueType>
<Type>xs:decimal
</Type>
<NumberQualifiers>
<Digits>10
</Digits>
<FractionDigits>0
</FractionDigits>
<AllowedSign>Any
</AllowedSign>
</NumberQualifiers>
</ValueType>
</column>
<row>
<Value xsi:type="xs:decimal">19930
</Value>
</row>
<row>
<Value xsi:type="xs:decimal">10300
</Value>
</row>
...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.