|
Тест скорости работы 1С от Мани Маньяка 🠗 (Волшебник 27.08.2022 22:48) | ☑ | ||
---|---|---|---|---|
0
Eugeneer
27.08.22
✎
12:31
|
Как там Гений говорит... Мой гений дарит вам...
Раньше я заводил тему про то что 1С жрет память и вообще тупит с таблицами - табличными частями, таблицами как реквизитами форм и так далее. Сначала в рабой обработке с тысячами строк кода не мог врубится. Потом путем комментирования кода я выявил что гребет память. Оказалось что 1С тупо жрет память на создании и заполнении таблиц. Причем даже на пустых данных - просто заполняем пустые строки. Памяти отжирается дофига! Я написал пустую обработку и подтвердилось. Память жрет и дрет. Я начал ее мучать сотни раз, перезапуская 1С, смотря диспетчер задач, меняя количество колонок, строк и так далее. Тут же вспомнил про Тест Гилева. У меня комп в топе. Сам Тест гилева работает не понятно как. И короче я решил свою обработку тоже сделать тестом для всех. Пока простенько. Запускаете в своей 1С, и смотрите куак у вас создаются таблицы. Сколько времени и прочее. Все заносится в результаты. Есть два вида таблиц и так далее. Обработка мне лично полезна будет для работы со своими клиентами. Я планирую еще туда добавить обмен результатами как у Гилева - информация о железе и прочее. Обработка бесплатно. Скачать можно тут https://subsystems.ru/news/generator-ogromnoy-tablitsy-test-skorosti-raboty-1s/ |
|||
110
Eugeneer
27.08.22
✎
16:21
|
(108) причем тут гиги) Там строки. 20-50-100-200 тысяч строк. Пофиг. Мне вообще неизвестно у кого сколько конкретно строк. Это всего инструмент.
Есть у кого 500 строк, а кто то с 2 млн приходит. Листать и не нужно. Но в ТЧ можно играться с этим. Сортировки, отборы. и прочее. Считай таблица данных, с которой можно вертеться. |
|||
111
Eugeneer
27.08.22
✎
16:23
|
Пока что известно то что 500к (и даже 1 млн) это 2-4 гига памяти на вывод. и где то секунд 20 на показ.
Это мелочи. Что сейчас такое 2 гига - открытый браузер. Другая проблема что не хочется чтобы 1С стока драла. |
|||
112
Eugeneer
27.08.22
✎
16:27
|
У меня если чо вообще как бы эта обработка для регл заданий)) Там если заданиями все - то и вывода нет никакого) Все также в РС льется если стоит галка.
|
|||
113
Eugeneer
27.08.22
✎
16:29
|
Вот только что запустил тот же файл в 400к строк . 1 минута полный цикл. Без изменений памяти.
|
|||
114
Eugeneer
27.08.22
✎
16:34
|
Да черт. Наифга. Жрется память. Переоткрыл, запустил тоже самое. Фоном. Без какой либо формы. Вообще все целиком исключительно в модуле. И 3 гига нет.
|
|||
115
Кирпич
27.08.22
✎
16:34
|
(110) ну добавляй в справочник и играйся. в 1с не обязаны твои извращения поддерживать
|
|||
116
Eugeneer
27.08.22
✎
16:46
|
Короче пока нфиг)) выходной.
2 минуты чтения и загрузки всего в регистр фоном. без всякого показа. и заливки 400 тысяч овна. 5 гиг оперативки (семечки). Пусть кому надо серваки нормальные покупают. А не работают на овке 12 года. Я вон у Гилева увидел тех у кого там 10-20 показатель. Почти вся моя клиентура - с ксеонами E5 |
|||
117
СеменовСемен
27.08.22
✎
17:17
|
А как же тест?
|
|||
118
Eugeneer
27.08.22
✎
17:29
|
Тест остается и будет развиваться! Я в нем учту создание таблиц на сервере, клиенте. Отдельно показ в форме.
Тем более он мне очень нужен для моих задач и клиентов. Буду его улучшать, развивать. Уже задумался сделать подобие всех процессов моих. Скорее всего сделаю даже целое расширение. Там будет запись в справочник, регистр. Буду записывать логи - и каждый шаг отмерять. Выводить отчет. Будут таблицы в памяти, в форме, запись в регистр, чтение из регистра в таб док и так далее. Везде наделаю замеров. |
|||
119
H A D G E H O G s
27.08.22
✎
17:32
|
Ни кто не устоит перед Высшим Благом!
|
|||
120
Eugeneer
27.08.22
✎
17:33
|
Думаю встрою себе в подсистему сразу. С моими регистрами.
А также возможно создам расширение на Управляемых формах или просто отдельную конфигу. У Гилева там готовый инструмент, он прикольный. базару нет. люди вложились трудозатратами. Но мне мой будет более понятный, потому что я делаю решения. И мне будет отлично запускать тест решения у клиентов на одном и тот же объеме - например 100-500к строк. Чтобы возможно было сравнить между всеми на одном обьеме результаты. |
|||
121
Eugeneer
27.08.22
✎
17:35
|
Гилев у себя закрыл как он получает системную иформацию различную. а в 1С скромный инструмент получения инфо о памяти и так далее.
|
|||
122
Eugeneer
27.08.22
✎
17:48
|
Вот мой гений дарит вам... Нашел вариант как уменьшить память.
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(Объект.ТабличнаяЧасть); //ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); Не используем ЗначениеВРеквизитФормы вообще. Но если в параметр процедуры мы передаем Объект.ТабличнаяЧасть то память жрется но значительно меньше. А также отображение гораздо быстрее. Короче 1С страшно тупит когда мы весь объект пытаемся снова в форму впихнуть. |
|||
123
Eugeneer
27.08.22
✎
17:51
|
Там видимо огромная утечка памяти даже не при какой то таблице. А вообще по всему обьекту.
Короче вот это ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - это полный пистец. |
|||
124
Eugeneer
27.08.22
✎
18:05
|
Я конечно не знаю товарищи. Но по мне это просто дикий песец. И дикий он потому что 2022 год. Сколько там уже этим УФ и восьмерке лет.
И речь то идет по сути об одной строке кода - методе. Я считаю это величайшим багом в 1С, который вот прям на глазах есть. И всем начхать))) Это жесть конечно же. Всего один метод фигачит утечку памяти и затупливает 1С так что i9 у меня вентиляторы запускает как будто плюс 70 жара. ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); |
|||
125
СеменовСемен
27.08.22
✎
18:06
|
Это не утечка, просто так много доп данных приходится хранить
|
|||
126
СеменовСемен
27.08.22
✎
18:08
|
А если только тч назад возращать, а не всю обработку?
|
|||
127
Кирпич
27.08.22
✎
18:10
|
(124) Ты еще бесконечный цикл запусти и сиди, убивайся, что проц греется. Делает глупости, а виновата 1с.
|
|||
128
Eugeneer
27.08.22
✎
18:30
|
(126) а и сделал ТЧ. параметром. Утечка ушла.
Проблема будет только если слишком много каких то вещей понадобится с сервера. Но думаю не много. Баг 1С на лицо. И я считаю недопустимо чтобы такой баг был. |
|||
129
Eugeneer
27.08.22
✎
18:31
|
(127) виновата еще как. Ее же код - метод)) А не мой. Значит не я говнокодер)) Уже гора с плеч.
ЗначениеВРеквизитФормы - убивает память в хлам. Факт. |
|||
130
Eugeneer
27.08.22
✎
18:35
|
Меня итак постоянно бесит что нужно между клиентом и сервером создавать кучу передач. А тут еще и такая подстава.
Просто херачит память и нагрузку процессора в дребезги. |
|||
131
Гений 1С
гуру
27.08.22
✎
19:01
|
(129) ну не используй ЗначениеВРеквизитФормы, есть же другие методы, алло
|
|||
132
Eugeneer
27.08.22
✎
20:59
|
(131) это очень жестко. Выдернуть одну только таблицу с сервака и вернуть ее на форму это очень тяжело. Особенно если в модуле по ней дофига чего процедур и прочего
|
|||
133
Eugeneer
27.08.22
✎
21:01
|
Ее практьически одну невозможно вернуть. Это по всему коду вообще везде параметр надо и передавать ее. по всем процедурам и функциям.
Уже в модуле не получится обращаться к ней как просто к реквизиту обьекта. Иначе на самом серваке может быть все сработает с ней. А вот на форму чисто ее никак. Поэтому придется прям везде в параметры пихать |
|||
134
Гений 1С
гуру
27.08.22
✎
21:02
|
(133) а в чем проблема? Можешь ее сформулировать? Зачем тебе таблицу с сервака на форму передавать? тем более большую? зачем тебе вообще программно с формами объектов с большой табличной частью работатЬ? обычно больше 99к строк не делаю в табличной части, надо бить такие большие документы.
|
|||
135
Eugeneer
27.08.22
✎
21:04
|
(134) да у тебя и 99 и 20к. будут вызывать утечку. ты пойми что глюк 1С делает утечку памяти по этому методу в 10-20 раз.
Просто я на тесте 500к терял 3 гига. Ну а ты будешь терять 200-300-500 мегабайт Это тоже как то не очень приятно. Когда просто так. |
|||
136
Кирпич
27.08.22
✎
21:06
|
(135) Да угомонись ты со своей утечкой. Ты просто понапрограммировал, по незнанию, какой то херни. А утечки нету.
|
|||
137
Eugeneer
27.08.22
✎
21:07
|
(134) чувак - люди бывают работают с каталогом в 100к номенклатуры. У некоторых есть и миллионы.
Да они хотят получать таблицы. Мало ли - что угодно могут хотеть. Любые таблицы, данные. Какая разница. Они что виноваты чт оу кого то 2000 товаров, а у них каталоги по 500к. Или по твоему у кого много номенклатуры - пшел нафиг. |
|||
138
Гений 1С
гуру
27.08.22
✎
21:08
|
(137) какого рода таблицы? если речь о табличных частях документов, то нет, там больше 99 не вмещается. Если речь о регистрах и справочниках, там используются динамические списки, а не табличные части. Алле.
|
|||
139
Eugeneer
27.08.22
✎
21:08
|
Тем более удивительно что 1С себя позиционирует уже как мега супер платформа. тысячи юзеров. Производства целые. Кластеры.
А тут просто фиговая задача, а утечка выше крыши)) Если про такое узнают какие нибудь другие кодеры, они ржать будут. Что 1С на таблицах и формах грызет. |
|||
140
Гений 1С
гуру
27.08.22
✎
21:09
|
(139) анженер, в чем задача-то. поясни. подсказываю - ты ТЗ можешь сохранить на сервере ПоместитьВоВременноеХранилище
|
|||
141
Eugeneer
27.08.22
✎
21:09
|
(138) кто тебе сказал что не вмещается))0 вмещается сколько хочешь. это номера строк не будут больше 99 999. Но фактически может быть любой. Просто все строки свыше будут 99 999 иметь номер.
Кстати это тоже бесит. Мегапратформа не может назначать больше 99 999 строк))) |
|||
142
Гений 1С
гуру
27.08.22
✎
21:10
|
Если тебе надо показывать здоровую таблицу, сохраняй ее в регистр сведений и выводи его динамическим списком.
|
|||
143
Гений 1С
гуру
27.08.22
✎
21:10
|
(141) больше 99.999 строк в ТЧ - это проблема архитектора. Не стоит так проектировать данные.
|
|||
144
Eugeneer
27.08.22
✎
21:13
|
(140) вообще не вариант. еще хуже. это придется помещать, вытаскитвать, снова помещать, снова вытаскивать. это будет ад адский. Для разовой ситуации еще можно. Если какие то активности с ней то уже нет.
У меня там целый набор процедур с таблицей. десятки команд. и нажатиями форме, и просто отметкой галочек - которые потом в регламенте будут в модуле выполнять десятки процедур. ты мне предлагаешь веще из хранилища дергать таблицу в 500к строк))) нет спасибо. |
|||
145
Eugeneer
27.08.22
✎
21:13
|
(143) это проблема 1С. таких ограничений нет ни в одной нормальной программе. Мало того это просто смешное количество.
|
|||
146
Eugeneer
27.08.22
✎
21:15
|
Гений еще раз. Ты совсем не понимаешь что я тебе говорю. Есть фирмы с 2000 товаров и там бухи в толонок плюют - пять строчек руками в накладные набивают 10 штук в день.
А есть компани где десятки сотни тысяч товаров. Они их прогоняют туда сюда, смотрят, да, какие то действия делают с этими данными. и крутят вертят. Для этого 1С выбрали. |
|||
147
Гений 1С
гуру
27.08.22
✎
21:16
|
(144) погоди. о какой ситуации идеть речь? ты хочешь использовать типовой справочник/документ, у которого есть типовая форма от 1С, но с большим количеством строк или че?
(145) ты занимаешься нытьем, давай решать проблему |
|||
148
Eugeneer
27.08.22
✎
21:18
|
В автозапчастях чуть ли не постоянная задача - проценка. А там прайс листы в миллионы строк.
Нужно сопоставить, сравнить, проценить. Проценка это еще различные условия. И да прикол в чем - сделать это все не имея даже номенклатуры в базе. Т.е. нужно все подгрузить виртуально. Без записи в базу. Что то синхронизировать то что в базе есть, остальное - предоставить выбор. Типа кликнет на 1-2-5 производителей которые попались в загрузках и создать. Еще просмотреть что за список будет. |
|||
149
Eugeneer
27.08.22
✎
21:18
|
Вагон и тележка возможных действий юзера.
|
|||
150
Eugeneer
27.08.22
✎
21:20
|
(147) да я уже решил. Я выше написал несколько раз. Отлично работает если убрать кривой метод и передавать таблицу в параметр. правда придется везде ее передавать параметром по всем процедурам модуля. Уже сделал.
Но надо добавиться исправления бага от 1С. |
|||
151
Eugeneer
27.08.22
✎
21:21
|
Я считаю это реальный косяк платформы. мегакосяк. что такой важный метод - так работает.
|
|||
152
RomanYS
27.08.22
✎
21:25
|
(151) это не косяк и не утечка. Это особенность сериализации данных формы, не более того
|
|||
153
Eugeneer
27.08.22
✎
21:27
|
(152) давайте не гадать. фактически - утечка памяти.
|
|||
154
Eugeneer
27.08.22
✎
21:28
|
назовем это утечка памяти в результате сериализации данных формы
|
|||
155
RomanYS
27.08.22
✎
21:28
|
(153) ты не понимаешь что такое утечка. Это не утечка
|
|||
156
Гений 1С
гуру
27.08.22
✎
21:40
|
(148) и ты хочешь все это грузить в память? окстись... разбивай прайс на пакеты и грузи их частями. или юзаю не-1с-базу данных
|
|||
157
Гений 1С
гуру
27.08.22
✎
21:41
|
(153) нет, тут с тобой никто не согласится
|
|||
158
Гений 1С
гуру
27.08.22
✎
21:41
|
(148) ну или грузи все в таблицу на сервере, а на форму передавай частями. Отборы сам напиши
|
|||
159
СеменовСемен
27.08.22
✎
21:42
|
(144) в хранилище достаточно быстро кладется.
А похорошему нужна отдельная субд и балк инсерт туда |
|||
160
СеменовСемен
27.08.22
✎
21:43
|
(159) какой нибудь my-sql вполне может подойти. Там для старта сервера 1 exe шника достаточно
|
|||
161
СеменовСемен
27.08.22
✎
21:45
|
на c# excel в csv и в базу - все будет очень быстро
|
|||
162
Кирпич
27.08.22
✎
21:46
|
(160) не в коня корм. он кроме 1с ничего не понимает.
|
|||
163
Eugeneer
27.08.22
✎
21:46
|
(156) а в чем проблема с памятью? мы как мидим что 1С легко 500к делает таблицы. 4 секунды. без проблем. всего пара десятков мегабайт.
Мало тебе я больше скажу - о чем не говорил. помимо ТЧ, у меня уже до этог ов 1С в памяти висят ТЗ в которую считаны все эти 500к строк. Но там еще неизвестно что есть что. Из той ТЗ я делаю другую ТЗ - где уже распознано что есть что. И тоже ноу проблем))) И фоном даже все работает на ура. Еще раз - проблема с формой))) Забудь про то что там миллионы строк и зачем они) Для оперативки это фигня!!! Как и для подобных задач. Глюк в 1С в конкретном методе. Один единственный метод. И это глюк платформы. |
|||
164
СеменовСемен
27.08.22
✎
21:48
|
(163) напиши в 1с может поправят
|
|||
165
Кирпич
27.08.22
✎
21:50
|
(163) как увидеть твою утечку? я скачал твою обработку, нажал на кнопку на обоих вкладках. сожрало гиг. что не так?
|
|||
166
Eugeneer
27.08.22
✎
21:51
|
(165) а не должно жрать гиг))) кстати обработку я допилю. есть вариант без утечки.
|
|||
167
Кирпич
27.08.22
✎
21:52
|
(166) откуда тебе знать то сколько должно быть? :)
|
|||
168
СеменовСемен
27.08.22
✎
21:53
|
(167) там где-то выше опыты проводили. в 10 раз меньше
|
|||
169
Eugeneer
27.08.22
✎
21:55
|
(160) не катит. Почему это нужно в 1С даже объяснять лень. Это не я кроме 1С ничего не знаю) Это вы не знаете для чего нужна 1С)
|
|||
170
Гений 1С
гуру
27.08.22
✎
21:55
|
(160) пусть анженер напишет Базуху, ггг
(163) там сериализация идет через XML, поэтому это не глюк. Никто не планировал гонять с клиента на сервер такие объемы. Окстись, еще раз тебе говорю. (164) Не смогут, такое поведение не задумано. |
|||
171
Кирпич
27.08.22
✎
21:56
|
(168) ну если писать херню, то и будет память жрать. всё предсказуемо. какие претензии то к 1с.
|
|||
172
Eugeneer
27.08.22
✎
21:56
|
(167) разные тесты показывают что в 10-20 раз меньше.
|
|||
173
Eugeneer
27.08.22
✎
21:57
|
(171) т.е. хочешь сказать что стандартный метод встроенного языка 1С - это херня. И его писать не нужно. В данном конкретном случае это верно.
|
|||
174
Eugeneer
27.08.22
✎
22:01
|
По сериализации насколько я почитал материалы. Все пишут что она в основном для сохранения, восстановления настроек.
Нигде не сказано что если у нас есть объект на клиенте и мы делаем с ним что то на сервере, но хотим увидеть на клиенте - должно в результате передачи каких то примитивных данных - жрать память и разгонять процессор. |
|||
175
Eugeneer
27.08.22
✎
22:07
|
Сделал поиск по УТ11 насчет ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
Нашел пару десятков использований. Типовые обработки - ЗагрузкаЦЕнПоставщикаИзВнешнихФайлов - бугагага..... КлиентБанк - выгрузка. СопоставлениеОбъектовБаз ИсправленияОстатковОрганизаций УДАЛЕНИЕ НЕИСПОЛЬЗУЕМЫХ ОБЕЪКТОВ И внимание УниверсальныйОбменданнымиXML ну и еще десятки других. |
|||
176
СеменовСемен
27.08.22
✎
22:08
|
(174) чтоб по сети передать данные их нужно сериализовать
|
|||
177
Eugeneer
27.08.22
✎
22:12
|
+(176) это все делает платформа. у нас к ней доступа нет. мы этим не управляем. нам дают методы конфигуратора.
Если эти методы - вызывают потерю памяти и разгон процессора, то .... ну а дальше слов нет))) |
|||
178
СеменовСемен
27.08.22
✎
22:14
|
(177) Тормозят УФ, ничего не поделаешь
|
|||
179
Eugeneer
27.08.22
✎
22:14
|
Вот ПИСЕЦ
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); ВОТ ТОЖЕ САМОЕ но нормально. ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(Объект.ТабличнаяЧасть); //ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); В обработке больше ничерта нет. По сути кроме этой таблицы. В первом случае + 2 гига потрея памяти, 20 секунд на отображение, еще ПК гудит как не знаю что. |
|||
180
Кирпич
27.08.22
✎
22:27
|
(179) У меня 1 гиг после нажатия двух кнопок. 2 гига нету.
Кто тебе сказал, что это потеря памяти? Просто выделяет заранее побольше. Чтобы два раза в магазин не бегать. |
|||
181
Кирпич
27.08.22
✎
22:29
|
А вабще это ООП и XML. Два тормоза перестройки. Без них всё летало.
|
|||
182
Eugeneer
27.08.22
✎
22:46
|
Блин какой то косяк есть....
ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(Объект.ТабличнаяЧасть); если я начинаю передавать параметром ТЧ в модуль в процедуру. Но в этой процедуре есть еще много процедур которые что то делают с ТЧ, причем внутри них идет обращение ТабличнаяЧасть (так как это реквизит обработки и модуль обарботки видит реквизиты). То переданная параметром ТЧ - не заполняется тем что делают другие процедуры. Те модуль обработки не видит эту ТЧ обьекта переданную как параметр. А видимо видит другую ТЧ. Короче у меня уже баржак в голове. Теперь модуль хрен знает как работает. Тогда придется везде во всех процедурах передавать параметром ТЧ переданную из формы. А внутреннюю (данные) типа пустые. Епт. Нет в жизни счастья. |
|||
183
Eugeneer
27.08.22
✎
22:48
|
Уета полная получается. разные ТЧ. Одна из формы параметром идет, другая которая обьект на сервере пустая. Кучи процедур. Все переписывать надо, только ради того чтобы на форме отрисовать без зависона. Бред.
|
|||
184
Волшебник
27.08.22
✎
22:48
|
Пока притоплю ветку. Автор в раздумьях.
|
|||
185
Eugeneer
28.08.22
✎
05:59
|
Короче полная уета. Я не знаю что виновато.
Я поставил три замера (просто сообщениями). И вот что вышло &НаСервере Процедура ЗаполнитьТаблицуНаСервере() НачалоЗагрузки = ТекущаяДата(); ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(); КонецЗагрузки = ТекущаяДата(); ВремяВыполнения = КонецЗагрузки - НачалоЗагрузки; Сообщить(ВремяВыполнения); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); КонецЗагрузки = ТекущаяДата(); ВремяВыполнения = КонецЗагрузки - НачалоЗагрузки; Сообщить(ВремяВыполнения); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьТаблицу(Команда) НачалоЗагрузки = ТекущаяДата(); ЗаполнитьТаблицуНаСервере(); КонецЗагрузки = ТекущаяДата(); ВремяВыполнения = КонецЗагрузки - НачалоЗагрузки; Сообщить(ВремяВыполнения); КонецПроцедуры Результаты Заполнение таблицы в модуле обьекта - 4 секунда работы. ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - 9 секунда работы Завершение серверной процедуры формы и возврат в клиентскую - 27 секунда работы. Наибольшее количество времени занял просто выход из серверной процедуры в клиент. Так как серверная выполнялась с контекстом и меняли мы данные обьекта, по сути сжирает все тупо изменение обьекта. |
|||
186
Eugeneer
28.08.22
✎
06:07
|
И там начхать. хоть параметром, хоть без параметра. хоть с использованием ЗначениеВРеквизитФормы хоть без него. Все равно жрет память.
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьТаблицуНаСервере(Объект.ТабличнаяЧасть); //ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); Если сделать так. то будет 4 секунды заполнения. и 22 секунды общего выполнения до выхода в клиенскую команду. В итоге пофиг ВСЕ. экономия есть 5 секунд. Но это ничто по сравнению с тем что все сжирается фактически даже не кодом, а просто тем что мы выполняли серверную процедуру с контекстом и меняли обьект. Программно это не управляется никак. Никакой код не сжирает память. По сути это обыкновенное поведение 1С между клиент-серверными процедурами какого либо объекта. |
|||
187
Eugeneer
28.08.22
✎
06:13
|
По факту это значит что что при работе с любым обьектом в 1С (например НОВЫЙ документ с табличной частью). и допустим кнопкой заполнить (да просто заполнить по самые 99 999 строк). То получим сжирание памяти и тормоза.
Сами ТЧ будут заполняться может быть быстро, а вот показ на форме при открытом документе - в 4-5 раз тормознее. Еще при этом и память засирается. ВЫВОД ТУТ ТОЛЬКО ОДИН - 1С не умеет работать с большим количеством данных в формах объектов которые содержат какие либо таблицы заполненные данными. |
|||
188
Eugeneer
28.08.22
✎
06:17
|
С другой стороны 500к строк данных - не так и мало. 20 секунд подождать скорее всего норма. Я думаю даже штатный отчет в 1С любой на 500к строк будет еще дольше крутиться.
А тут всего 20 секунд. Другое дело что памяти 2-3 гига на это явно ну перебор. С учетом того что если на форму не выводим то вообще нет потери. Хотя таблица в оперативке уже сидит. |
|||
189
Eugeneer
28.08.22
✎
06:23
|
Рома ты сбил меня с толку своими показателями памяти. А потом я увидел что у тебя всего 2 колонки. А я их сделал 10.
Количество колонок таблицы имеет значение. Память жрет пропорционально количеству реквизитов и их типов. Даже не смотря на то что мы не заполняем. |
|||
190
Кирпич
28.08.22
✎
07:53
|
Неугомонный. Тебе же объяснили уже 100 раз. Это сериализация в xml столько памяти жрет. Наверняка на клиенте хранится вся форма в xml тексте, да еще и в DOM. УФ не предназначены для таких извращений. Успокойся.
|
|||
191
Гений 1С
гуру
28.08.22
✎
08:48
|
(190) да вот ему и объясняют, а он не догоняет.
|
|||
192
Кирпич
28.08.22
✎
08:50
|
Специально для автора.
Записал таблицу значений в 500000 строк в файл xml. В С# загрузил в DOM. Сожрало 1.5 гига. |
|||
193
Кирпич
28.08.22
✎
09:37
|
FreePascal вообще сожрал 3 гига. Так что в 1с еще более менее прилично всё :)
|
|||
194
H A D G E H O G s
28.08.22
✎
09:43
|
(193) freepascal разве не юзает типовой ms xml dom ?
|
|||
195
Eugeneer
28.08.22
✎
09:46
|
(190) по сути ты говоришь - Утверждение 1С не предназначена для таких задач....
Т.е. если у компании 200к товаров то 1С для всех не предназначена. Никакой крупняк типа Озона работать на ней не должен! Как ивообще все у кого большие каталоги. Только те у кого 10 тысяч товаров. Так и запишем. И только ручная работа, никакой автоматизации. Ибо если нужно создавать документы в 1С - установки цен, и не руками их набивать будут - а импортировать. То при открытом документе в который юзер должен жать кнопку чтобы заполнить ТЧ - у него будет жрать память и висеть ПК. Ибо вот так не предназначена 1С для таких задач. |
|||
196
Eugeneer
28.08.22
✎
09:47
|
1С ручная программа для ввода. Если ты работаешь на клиенте - то обязан на клиенте ничего не делать на сервере. Твое жалкое существование - это максимум отчетики крутить. И документики по 5 строк набивать.
|
|||
197
Eugeneer
28.08.22
✎
09:48
|
Вместо 1 юзера должно работать 500. Все должны только руками работать.
|
|||
198
Кирпич
28.08.22
✎
10:14
|
(194) Нафига ему этот типовой. FreePascal же супероссплатформенный. У него всё своё. Да и своего несколько библиотек. Я Laz2_dom пробовал.
|
|||
199
Кирпич
28.08.22
✎
10:17
|
(195) тебе уже писали, что нужно это делать по другому, а не рыдать и молиться.
|
|||
200
Кирпич
28.08.22
✎
10:25
|
(194) Там в еще косяк есть, List так реализован, что при расширении, удваивает количество памяти для следующей вставки объектов. Т.е. могло получиться так, что реальных объектов в списке 1001, а памяти выделено на 2000. Я когда то даже исправлял эту хрень, делал чтобы выделялось равными порциями а не (размер списка * 2), когда надо было большие файлы грузить в DOM.
|
|||
201
Eugeneer
28.08.22
✎
14:39
|
Пока что я нашел выход это потимизация самой таблицы. К хрену поудалять там все излишнее. Возможно все что не нужно визуально - в другую ТЗ вынести.
В том что на показ исключительно именно то что нужно. Прямая зависимость там есть от количества колонок. Причем даже если они просто есть в таблице отображаемой но не выводяться - все равно грызет. Поэтому тут нужно разносить по разным таблицам. то что нужно юзеру для работы, то что не нужно для глаз - в другой болтается. Потом когда оно понадобится вместе - уже в модулях соединять и колбасить. Ключ связи создать и все. |
|||
202
NorthWind
28.08.22
✎
15:55
|
(201) не прошло и 25 лет, как были постигнуты основы работы с базами данных...
|
|||
203
NorthWind
28.08.22
✎
15:58
|
Этак еще лет через 10 станет очевидно, что юзер вряд ли может визуально обозревать сотни тысяч строк данных, и поэтому показывать их на форме в таком количестве - дело бесполезное... Опасаюсь даже думать, какие еще прозрения могут быть.
|
|||
204
Eugeneer
28.08.22
✎
16:07
|
(203) через 10 лет. ни юзеров ни программистов не будет. Никто смотреть ничего вообще не будет. А программисты нафиг не нужны будут.
И это произойдет по двум причинам 1) это так сделают 2) ядерные войны снесут все нафиг |
|||
205
СеменовСемен
28.08.22
✎
18:32
|
(204) ты 10 лет тоже самое говорил
|
|||
206
VladZ
28.08.22
✎
19:22
|
(204) Довожу инфу (из проверенных источников):
1. Программисты будут нужны всегда. 2. Ядерной войны не будет. |
|||
207
Demiurg
28.08.22
✎
22:49
|
-(0) у вашего теста нет четкой цели, есть только "что то потестировать"
сначала должна четко сформулированная задача с условиями и ограничениями, потом всё остальное |
|||
208
Токарь
29.08.22
✎
05:03
|
(201) А говорят, что браузерная версия себя по другому ведёт, чем тонкий клиент, на больших таблицах. Правда или нет?
|
|||
209
Отпятисот
29.08.22
✎
06:01
|
(0)
Так ты и есть тот самый Маня или от него? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |