Имя: Пароль:
1C
 
Сортировка ТЧ влияет на скорость
,
0 RomaH
 
naïve
26.11.17
12:59
СтрокиСКодом = Объект.Пациенты.НайтиСтроки(Новый Структура("КодПациента",КодПациента));

при этом "программная" сортировка без записи не помогает,

Документ.РеестрЛицПодлежащихДиспансеризации.Форма.ФормаДокумента.Форма    903    СтрокиСКодом = Объект.Пациенты.НайтиСтроки(Новый Структура("КодПациента",КодПациента));    20    13,011470    99,75

а вот после интерактивной сортировки и записи документа:

Документ.РеестрЛицПодлежащихДиспансеризации.Форма.ФормаДокумента.Форма    903    СтрокиСКодом = Объект.Пациенты.НайтиСтроки(Новый Структура("КодПациента",КодПациента));    3 137    1,854233    75,76

почему так?
1 RomaH
 
naïve
26.11.17
13:08
сортировка не влияет
перед выполнения кода надо записать документ - тогда быстро
если просто открыть и выполнить код - медленно
открыть - записать и выполнить - быстро
2 H A D G E H O G s
 
26.11.17
13:11
(1) Ну может при записи строки документа доползают до клиента.
3 RomaH
 
naïve
26.11.17
13:15
(2) ну может
хотя ТЧ выведена на форму, КодПациента - показывает
просто реально попадалово получается
на тесте отрабатывает за 2 секунды
а на рабочей можно попасть на зависон в пару часов
4 Zhuravlik
 
26.11.17
14:21
А если в индекс "КодПациента" добавить?
5 RomaH
 
naïve
26.11.17
14:46
(4) пробовал - не помогает
6 Мимохожий Однако
 
26.11.17
14:50
Замеры делал? На какой процедуре зависон.
7 Zhuravlik
 
26.11.17
14:56
(0) А сколько строк в документе? Висяки везде, или только на одном каком-то?
8 NorthWind
 
26.11.17
15:02
(0) Индексация таблицы немного помогает. На 30 000 строках при многократом выполнении НайтиСтроки некоторый выигрыш во времени замечал в случае, если ТЗ была индексирована по поисковой колонке. Насчет сортировки не знаю.
9 Сияющий Асинхраль
 
26.11.17
15:04
Если уж автор экспериментирует, то интересно, что будет, если заменить НайтиСтроки запросом, и какова будет скорость, если работу с табличной частью заменить работой с таблицей значений, выгрузив ее предварительно...
10 NorthWind
 
26.11.17
15:06
(9) Если запрос через построитель запросов, то точно дрянь будет. Проверял. НайтиСтроки гораздо лучше. Вот здесь мои эксперименты по данной тематике: http://catalog.mista.ru/public/617455/
11 NorthWind
 
26.11.17
15:12
Хотя тут речь про ТЧ, а не про ТЗ... тогда извиняюсь, там может быть все по-другому
12 Сияющий Асинхраль
 
26.11.17
15:19
(11) Я до сих пор считал, что ТЗ, передаваемая в запрос сначала сбрасывается на винт, что, по идее, само по себе затратная операция. Если же работа с табличной частью, то тут уже все на винте... Хотя может я не прав, но тоже раньше как-то экспериментировал, у меня получалось, что с записанными на винт данными запросы оперировали быстрее типовых функций типа найти строки и т.д.
13 Сияющий в темноте
 
26.11.17
15:37
скуль сбросит в память или на винт таблицу,но с ней ему гамного быстрее работать
14 NorthWind
 
26.11.17
15:38
(12) возможно, в моем случае дело было как раз в этом. Я там как раз разбирал 1Совский код, где, как выяснилось, из ТЗ посторителем запроса в цикле выдергивались строки. Код работал непотребно долго.
15 RomaH
 
naïve
26.11.17
23:32
вы хоть почитайте для начала нулевой пост, потом остальные
замеры все есть

проблема не в том что "долго"
а в том, что "долго" в определенной ситуации

есть "нормальный" сценарий:
создаю документ - из файла гружу строки в ТЧ, потом отдельной командой эти строки обрабатываю -по этому сценарию все быстро (отдаю в работу)

что делает пользователь:
создает документ, грузит в него строки из файла, записывает и закрывает документ - открывает и запускает команду на обработку строк - и получает зависон на 1500 сек
звонит мне - и получает рекомендацию - перед исполнением команды "записать" документ

завтра посмотрю - возможно это баг новой платформы 8.3.10
16 RomaH
 
naïve
26.11.17
23:35
(14) 3 137    1,854233
3137 запросов за 1,85 сек - куда быстрее?
но зато стабильнее
но вместо одной строки кода - 50
17 Tateossian
 
27.11.17
01:44
(16) А зачем там сортировка по коду?

И вот этот твой "НайтиСтроки"?

"что делает пользователь: " -->
Программист должен писать такие программы, чтобы учесть все действия пользователя. Если пользователь так делает, значит ваша программа допускает такое поведение.
18 RomaH
 
naïve
27.11.17
08:03
(17) т.е. ты в курсе того, что без "записать" НайтиСтроки будет работать в 1000 раз дольше?
19 RomaH
 
naïve
27.11.17
08:12
на 8.3.9 аналогичное поведение
20 RomaH
 
naïve
27.11.17
08:12
а нет - путаю версии -
рабочая 8.3.10
тестовая 8.3.11
поведение на обоих одинаковое
21 Мимохожий Однако
 
27.11.17
08:17
(20) Еще раз... Какая именно процедура даёт зависон? Альтернативу для неё искал? Есть в базе регламентные операции, которые обрабатывают документ после записи?
22 RomaH
 
naïve
27.11.17
08:20
(21) еще раз - прочитай ветку для начала
еще раз - проблема не в методе, а в том, что метод дает разные результаты в разных ситуациях - скорость меняется в 1000 раз

хотя ситуации вроде бы не должны влиять
23 FIXXXL
 
27.11.17
08:22
(18) где выполняется НайтиСтроки() ?
24 Мимохожий Однако
 
27.11.17
08:23
(22) не увиливай. Ответь еще раз.
25 RomaH
 
naïve
27.11.17
08:26
(23) клиент
26 FIXXXL
 
27.11.17
08:27
(25) этот метод неявно вызывает сервер
соответственно клиентский кэш, поезду туда-сюда и проч. клиент-серверные радости :)