Имя: Пароль:
1C
 
Тест скорости работы 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)
Так ты и есть тот самый Маня или от него?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.