|
Оптимизация получения GUID по COM-соединению |
☑ |
0
fjay69
05.10.17
✎
09:46
|
Доброго дня!
Есть обработка, которая сверяет данные между двумя базами. Обработка запускается на Базе 1 (Б1), подключается к Базе 2 (Б2) по COM-соединению. Поставлена задача ускорить выполнение сверки. Замер времени показывает, что дольше всех выполняются операции подобного рода:
ГУИД = COMПодключение.XMLСтрока(COMОбъект.УникальныйИдентификатор());
Суть в том, что в Б2 запускается запрос (COMПодключение.NewObject("Запрос")), затем объекты Б2 нужно сопоставить с объектами Б1 по GUID. Есть ли способ выполнить это быстрее?
|
|
1
RomaH
naïve
05.10.17
✎
09:48
|
ГУИД = COMПодключение.XMLСтрока(COMОбъект.УникальныйИдентификатор());
тут две операции - которая из них дольше?
|
|
2
mehfk
05.10.17
✎
09:50
|
Вместо того, чтобы каждый раз получать гуид объекта в той базе, сохраняй в регистр сведений в той базе соответствующие гуиды объектов этой базы.
|
|
3
DrShad
05.10.17
✎
09:51
|
(2) +1
|
|
4
fjay69
05.10.17
✎
09:54
|
Эта:
COMОбъект.УникальныйИдентификатор()
|
|
5
d4rkmesa
гуру
05.10.17
✎
14:14
|
(0) COMПодключение.XMLСтрока(COMОбъект) - если объект ссылочного типа.
|
|
6
Ненавижу 1С
гуру
05.10.17
✎
14:31
|
(0) мне кажется больше всего времени ест запрос, а не эта фигня
|
|
7
Ненавижу 1С
гуру
05.10.17
✎
14:33
|
(0) а почему:
ГУИД = COMПодключение.XMLСтрока(COMОбъект.УникальныйИдентификатор());
а не:
ГУИД = COMПодключение.String(COMОбъект.УникальныйИдентификатор());
|
|
8
RomaH
naïve
05.10.17
✎
14:39
|
(7) а почему не
ГУИД = "" + COMОбъект.УникальныйИдентификатор();
|
|
9
ProxyInspector
05.10.17
✎
14:40
|
(7) COMПодключение.String(COMОбъект.УникальныйИдентификатор()) это самый быстрый способ. По моему опыту.
|
|
10
Ненавижу 1С
гуру
05.10.17
✎
14:42
|
(8) потому что не взлетит, будет ГУИД = "COMObject"
|
|
11
fjay69
05.10.17
✎
15:15
|
Как мне подсказал коллега, такой способ работает быстрее:
ГУИД = COMПодключение.XMLСтрока(COMОбъект);
То есть я могу получить ГУИД не вызывая функцию УникальныйИдентификатор(). И это реально быстро!
|
|
12
fjay69
05.10.17
✎
15:23
|
(7) Пробовал. Разницы скорости не заметил.
|
|
13
4St
05.10.17
✎
15:24
|
(11) Еще можно закинуть COM объекты в Массив, сериализовать его, а из него уже надергать гуиды.
|
|
14
pavig
05.10.17
✎
15:31
|
(0) Подготавливай весь набор на стороне СОМ, забирай оттуда в сериализованном виде, обрабатывай "внутри" своей базы. Делов-то)
|
|
15
Фортовый
05.10.17
✎
15:34
|
читал подобное в мануале ускорения обмена .там чел писал .что выгружал соответсвие в регистр сведений .как то через кеш делал в нем . погугли найдешь статью
|
|
16
Mikhail Volkov
05.10.17
✎
18:51
|
(2) ГУИДы той и этой базы одни и те же!?
(0) Много передавать? Дольше всех устанавливается СОМ-соединение...
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший