Имя: Пароль:
1C
1С v8
Прошу подтвердить воспроизведение ситуации.
,
0 H A D G E H O G s
 
09.04.20
22:30
Дня доброго.
Наблюдаю колоссальное падение производительности ТаблицуЗначения начиная с платформы 8.3.12.

Есть одинаковая конфигурация, запускаемая под 8.3.12 и выше:
https://yadi.sk/d/oBAAKoaDA2gq9g
и под 8.2.19:
https://yadi.sk/d/NyE1ADo1NytrqQ

В конфигурации - одна обработка "ПроверкаПроизводительности".

Код ориентирован на 2 метода
Свернуть()
Индексы.Добавить()

Замер под 8.2.19:
http://prntscr.com/rwbz62
Замер под 8.3.12:
http://prntscr.com/rwbzl4

Прошу подтвердить.
99 H A D G E H O G s
 
10.04.20
11:35
(97) Епстественно мне пришла такая мысль и я проверял на непрогретом сервере 1С.
100 fisher
 
10.04.20
11:37
(99) Ну откуда-то он же должен в конце-концов их получить для сортировки ТЗ по представлениям?
101 H A D G E H O G s
 
10.04.20
11:37
(100) Речь идет про Свернуть()
102 fisher
 
10.04.20
11:38
(101) Ну дык а если после Свернуть вызвать Сортировать - в БД за представлениями лезет или нет?
103 lodger
 
10.04.20
11:39
(101) у одного объекта несколько внешних методов могут наследовать один и тот же базовый метод?
104 Djelf
 
10.04.20
11:40
(85) Ну может и починили какую то ошибку, но в тесте 20000 записей, у меня получается 0.9с на запись при свертке.
Это слишком хардкорная починка. Диск во время теста, судя по монитору, не задействован очень слабо.
В sql надо бы посмотреть, лезет или нет.
105 H A D G E H O G s
 
10.04.20
11:40
(102) Епстестенно лезет.
Вы хоть ветку почитайте.
106 ansh15
 
10.04.20
11:41
Файловая версия.
Windows 7, платформа 8.3.14.1993 - 16/16/5554/874
CentOS 7, платформа та же        - 5/12/17/16
Компьютеры одинаковые.
Будет забавным, если на вопрос "Почему так?" ответом от разработчиков будет "А так и планировалось".
Хотя, скорее всего, простой недочет.
107 fisher
 
10.04.20
11:41
(105) Тогда согласен. Нет оправданий. Что-то явно перемудрили.
108 H A D G E H O G s
 
10.04.20
11:42
(104) Во, посмотри. А то тут Гарри эразмы пишет.
109 trad
 
10.04.20
11:42
(80) да, каюсь, не написал что я про сравнение величин с целью упорядочивания
А свертка начинается с упорядочивания
110 H A D G E H O G s
 
10.04.20
11:43
(106) Написал на партнерке, отправили ~~прямо в ад, на№;%~~ на почту техподдержки. Посмотрим, что ответят.
111 fisher
 
10.04.20
11:44
(106) Это потому, что на Windows приходится результаты 300 раз перепроверять и принимать среднее.
112 rsv
 
10.04.20
11:46
Мдааа .. еще  раз убеждаюсь  штааа скуль для  людей .  И  профайлер  смотрю пригодился .   А  как жо  ЦУП и настройки XML  .... непорядок.
113 rsv
 
10.04.20
11:47
Тогда  вторая серия  нужна ..... кейсы  для  постгри ... и портянки ЦУП
114 Djelf
 
10.04.20
11:49
Ubuntu 18.04 1C 8.3.16.1296
Свертка идентификаторов выполнена за 3
Индексация идентификаторов выполнена за 7
Свертка справочников выполнена за 5
Индексация справочников выполнена за 5
115 fisher
 
10.04.20
11:50
(109) Только чтобы свернуть по ссылкам, надо и упорядочивать по ссылкам. Ну и лично мне ТС доказал, что разумных объяснений такому поведению быть не может. Явно какая-то накладочка у разрабов вышла.
116 H A D G E H O G s
 
10.04.20
11:50
(106) (114) Вот что происходит, когда среди гиков-разработчков становятся популярными экзотические операционки...
Все зло от UNIX
117 dmpl
 
10.04.20
11:52
(78) Попробуй на клюшках свернуть 100500 строк...
118 dmpl
 
10.04.20
11:55
(106) Ответ будет "В целях унификации" :)

P.S. А может это meltdown вылез...
119 ansh15
 
10.04.20
11:59
(116) В кои-то веки что-то хорошее сделали для Linux :)
Ну, поломали в Windiws, да... Лишь бы наоборот не починили.
120 ansh15
 
10.04.20
12:03
(118) >>  meltdown
Но не в сотни же раз.
Помнится, писали о 20-30% и обещали улучшать.
Хотя у меня в ядре установлены nopti и т.п.
121 trad
 
10.04.20
12:04
(117) легко ))
    ТекстЗапроса = "
    |select top 5000
    |    id [Номенклатура $Справочник.Номенклатура]
    |from $Справочник.Номенклатура (nolock)
    |";
    рс = СоздатьОбъект("ODBCRecordset");
    РезИТ = рс.ВыполнитьИнструкцию(ТекстЗапроса, СоздатьОбъект("ИндексированнаяТаблица"));
    
    Пока РезИТ.КоличествоСтрок() < 150000 Цикл
        РезИТ = рс.ВыполнитьИнструкцию(ТекстЗапроса, РезИТ, 0);
    КонецЦикла;
    
    Сообщить("Количество строк " + РезИТ.КоличествоСтрок());
    Таймер = СоздатьОбъект("Таймер");
    Таймер.Метка();
    РезИТ.Свернуть("Номенклатура*", );
    Сообщить(Таймер.Метка());


Количество строк 150000
00:00:00.067

Сорри за офтопик
122 dmpl
 
10.04.20
12:28
(120) Если для получения каждого байта переключать контекст со сбросом кеша ЦП (а 1С любит по байтам к тем же файлам обращаться без буферизации), то и тысячи раз могут быть.
123 dmpl
 
10.04.20
12:30
(121) Это не клюшки. И не ТЗ ;)
124 ildary
 
10.04.20
12:34
(123) авторы 1c++ сильно удивятся, когда узнают, что написали ВК не для 7.7
125 trad
 
10.04.20
13:11
(123) 1c++ это неотделимая часть клюшек. разве нет?..
126 Cyberhawk
 
10.04.20
13:32
(110) Ссылку-то напиши
127 Djelf
 
10.04.20
13:37
(126) Она легко ищется: https://partners.v8.1c.ru/forum/topic/1904161
> Цитата из Правил форума:
> Форум не является ресурсом для разбора и регистрации ошибок.
128 Garykom
 
гуру
10.04.20
14:01
(127) А Михаил из Алкосферы это кто?
129 Djelf
 
10.04.20
14:02
(128) А я то откуда знаю? Но не я. Это точно!
130 lodger
 
10.04.20
14:06
(128) вероятно, коллега Ежова.
131 Garykom
 
гуру
10.04.20
14:09
И я правильно понял что если надо свернуть очень много ссылочных то есть смысл из одной колонки сделать две и свернуть по двум колонкам?
Было
СправочникСсылка

Делаем
СправочникСсылка.Метаданные() | СправочникСсылка.УникальныйИдентификатор()

И сворачиваем отдельно, а потом восстанавливаем ссылочные

Никто не хочет затестить?
И оценить накладные расходы на туда/сюда?
132 pechkin
 
10.04.20
14:31
(131) тогда уж лучше ТипЗнч
133 H A D G E H O G s
 
10.04.20
14:38
(131) Я Свернуть() уже обошел через создание уникальной таблицы через Соответствия.
Меня больше напрягает Индексирование.
134 bolder
 
11.04.20
05:53
(131) Да.Это работает.Вчера самостоятельно пришел к этому же.Ускорение на порядок.
135 Робинзон Крузо
 
11.04.20
11:40
8.3.15.1565 клиент-сервер с MS SQL

Свертка идентификаторов выполнена за 16
Индексация идентификаторов выполнена за 31
Свертка справочников выполнена за 7 625
Индексация справочников выполнена за 1 453
136 Сияющий в темноте
 
11.04.20
16:18
ссылка - не синглетон ли?
при создании получаем представление,а при сравнении тупо его используем.
вопрос-при одинаковых представлениях свернет оба?
137 RomanYS
 
11.04.20
16:23
(131) А через запрос не быстрее?
138 H A D G E H O G s
 
11.04.20
16:33
(136) Слов то мудренных понапридумывали.
Нет в ссылке представления
139 pechkin
 
11.04.20
16:40
Сможешь зависимость от количества посчитать?
140 pechkin
 
11.04.20
16:41
Кстати попробуй проверить по нескольким колонкам
141 pechkin
 
11.04.20
16:42
Ссылка вс тип и гуид
142 H A D G E H O G s
 
11.04.20
16:43
(139) Мне лень. Там уже вместо дежурного сотрудника ("ваша проблема очень важна для нас") проблемой заинтересовался более серьезный товарищь и я думаю, проблема в надежных руках.
143 Сияющий в темноте
 
11.04.20
16:46
(138) ну,логичнл бы его было там хранить,и один обьект ссылки на всю систему.
если представление в ссылке не хранить,то это не реализация,а маразм.
144 H A D G E H O G s
 
11.04.20
16:50
(143) Дичь пишите.
Ссылка - ссылка.
Представление - предсталение.
И не нужно их смешивать.
145 zak555
 
11.04.20
19:40
(114) я давно говорил, что на Лине 1с летает
146 Сияющий в темноте
 
11.04.20
19:43
не забываем также,что у ссылки есть методы получения данных обьекта и его поля,так что там не все так просто,как кажется,а представление,это перегрузка toString,по совести говоря.
147 H A D G E H O G s
 
11.04.20
19:49
(146) И что там непростого?
148 ДенисЧ
 
11.04.20
19:58
Ну и ***** эта ваша 1с....

)))
149 ptiz
 
11.04.20
20:07
Действительно, тормозит. "Веселые" у них шутки.
150 Злопчинский
 
11.04.20
20:19
(142) это говорит о том. что кто разрабатывает - вообще не имеют понятия о том как это используется? сфера. вакуум. конь. ;-)
151 H A D G E H O G s
 
11.04.20
20:26
(150) Скорее, это говорит о том, что они переползли на unix-системы, есть такое моровое поветрие в ИТ сообществе. Ну и о упоротости сообщества, что это заметили через несколько лет, несмотря на могучую поддержку ЦКПТ и прочие красивые слова.
152 Garykom
 
гуру
11.04.20
20:43
(151) Сообщество уже давно упоролось в запросы, код писать не умеют в массе
153 Сияющий в темноте
 
11.04.20
21:20
(147) если,вдруг,ссылка не сиглетон,то сравнение двух одинаковых ссылок-нетривиальная операция,обьекты в памяти разные,но должны быть равны.то есть перегрузка сраанения и повод для тормозов на пустом месте.
154 rsv
 
11.04.20
21:31
(152) кстати кто мешает тз прредать параметром в запрос и пусть субд думает над order by и group by
155 H A D G E H O G s
 
11.04.20
21:36
(154) Insert в цикле мешает.
(153) Ничего нетривиального. Сравнить типы и значения UID
156 Сияющий в темноте
 
11.04.20
22:25
(155) сначала runtime type identification,и только потом выход на функцию сравнения,которая сравнит поля обьектов.
157 H A D G E H O G s
 
11.04.20
22:30
(156) Пфф, в 1С везде runtime type identification
158 Сияющий в темноте
 
11.04.20
22:34
(157) ну,в любом обьекте в начале таблица виртуальных функций,как бы это и есть идентификатор типа.
если кто-то додумался функцию сравнения разместить в этой таблице,то все быстро,но штатно,Си++так не умеет-он перегрузку подставит только если типы явно заданы или ввзовет перегркзку для бахового типа Object.
159 Сияющий в темноте
 
11.04.20
22:36
Я когда Си++ в Си перегонял,у меня появлчлась возможность дописывать в таблицв виртуальных функций все,что я хочу,а вот в родном Си++ это нереально.
160 acht
 
11.04.20
22:54
(153) Спасибо тебе огромное, что ты платформу не пишешь!
161 TormozIT
 
гуру
12.04.20
08:57
Воспроизвелось.

Интересное наблюдение.
Если заполнить таблицу ссылками, которые не считывались из БД, то проблемы нет

    Таблица=Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Позиция");
    Для Счетчик=1 По Количество Цикл
        НоваяСтрока=Таблица.Добавить();
        НоваяСтрока.Позиция = Справочники.Справочник1.ПолучитьСсылку(Новый УникальныйИдентификатор());
    КонецЦикла;
162 H A D G E H O G s
 
12.04.20
11:16
(161) но обращений к БД нет.
163 RomanYS
 
12.04.20
11:19
(161) Да уж, интрига закручивается.
(162) А ошибку официально зарегистрировали?
164 H A D G E H O G s
 
12.04.20
11:20
(163) пока нет, выходные же.
165 lodger
 
12.04.20
23:33
(161) а если так

НоваяСтрока.Позиция = Справочники.Справочник1.ПолучитьСсылку(Выборка.Позиция.УникальныйИдентификатор());

то производительность методов ТЗ все равно деградирует.
166 RomanYS
 
12.04.20
23:37
(165) Если бы 1С можно было бы так ускорить, костылестроений вышло бы на новый космический уровень)))
167 Cthulhu
 
13.04.20
01:28
(165): а если (ценой накладных расходов, конечно) сделать то же самое но через промежуточную "развязку" в текстовой переменной (в которую сначала загнать строчное представление уид, а уже из этого текстового представления - перерего в уид-тип и получение по нему ссылки, присваиваемой полю(колонке)?..
168 H A D G E H O G s
 
13.04.20
12:42
Все. Ошибку воспроизвели, будут разбираться.
169 H A D G E H O G s
 
13.04.20
12:45
170 H A D G E H O G s
 
17.04.20
14:30
171 fisher
 
17.04.20
14:32
(168) Жму краба. Полезное для всех дело сделал.
172 Злопчинский
 
17.04.20
15:04
(168) разберуться ли.. и как скоро...
173 dmpl
 
17.04.20
15:33
(170) Главное, в какую категорию это попадет. Есть ведь "Не ошибка" :)
174 dmpl
 
17.04.20
15:33
(172) В 8.3.20 :)
175 trad
 
17.04.20
17:44
(162) - но обращений к БД нет.
- а если найду?..
))
176 H A D G E H O G s
 
17.04.20
18:37
(175) Найди
177 Djelf
 
21.04.20
12:23
+(170) > Исправлена: "Технологическая платформа", версия 8.3.17.1032 (для тестирования)

Это как? Сейчас тестовая 8.3.17.1386, в не исправлено... Чудеса.
178 TormozIT
 
гуру
22.04.20
07:00
(177) Это косяк в багтрекере. Сначала там было указано 8.3.18. Версия 8.3.17.1386 вышла до разбора ошибки. Поэтому в ней и более старых она не может быть исправлена.
179 H A D G E H O G s
 
22.04.20
18:22
Хммм. 8.3.15 и 8.3.16 обойдут щастем?
180 Сияющий в темноте
 
23.04.20
01:07
(178) если они подход к работе со ссылками поменчли,то ошибка может не проявляться,и они радостно написали,что исправили,хотя,может,наоборот,еще все ухудшили.
181 TormozIT
 
гуру
23.04.20
12:17
Исправили публикацию ошибки. Похоже все таки исправили в 8.3.17.1386, которая вышла после начала расследования, но до публикации ошибки.
182 Djelf
 
23.04.20
12:39
(181) Ничего они не исправили.
https://gyazo.com/6ca77266734b7e9f2f809c94ef64d97b
183 H A D G E H O G s
 
23.04.20
12:43
(182) Режим совместимости ?
184 H A D G E H O G s
 
23.04.20
12:47
Там в тестовых висят 8.3.14, 8.3.15. Надеюсь, в них поправят.
185 Djelf
 
23.04.20
12:49
(183) Отключил - без изменений.
186 H A D G E H O G s
 
23.04.20
12:49
Это печально.
187 Djelf
 
23.04.20
12:50
(186) Это не печально, это полное свинство.
188 Cyberhawk
 
23.04.20
12:52
(187) "Ваше обращение зарегистрировано"
189 Djelf
 
23.04.20
13:00
У (0) зарегистрировано HL-148143, зачем создавать новое?
190 Djelf
 
19.05.20
12:02
(0) 8.3.17.1469
Индексация идентификаторов выполнена за 31
Индексация справочников выполнена за 30
Свертка справочников выполнена за 34
Свертка идентификаторов выполнена за 19
191 H A D G E H O G s
 
19.05.20
12:09
(190) Хурра!
192 H A D G E H O G s
 
19.05.20
12:10
(190) А теперь проводим такой же эксперимент с Соответствием и если видим провал - идем жаловаться БГ.
193 TormozIT
 
гуру
19.05.20
14:53
В списке исправленных ошибок этой сборки нет нашего бага.
194 H A D G E H O G s
 
19.05.20
15:15
(193) Зайди на партнерку, плиз.
А то они совсем там...
195 H A D G E H O G s
 
19.05.20
15:15
(193) И вчитайся, плиз, пристально в мой лейбмотив.
196 lodger
 
19.05.20
16:00
ну и в итоге? обновил платформу, всё полетело?
197 H A D G E H O G s
 
19.05.20
16:21
198 lodger
 
20.05.20
16:21
теперь еще дожить когда эта сборка из теста выйдет.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший