Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...

Bug #987035

open

Метод ЗаполнитьЗначенияСвойств замедляется при большом числе свойств источника и малом приемника

Added by Сергей Старых about 1 month ago. Updated about 1 month ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

https://partners.v8.1c.ru/forum/t/2191278/m/2191278
https://infostart.ru/1c/articles/2122552/
Конфигурация ПО

1С 8.0-3.25

Проблема

Метод ЗаполнитьЗначенияСвойств замедляется при большом числе свойств источника и малом приемника

Воспроизведение

Открыть приложенную внешнюю обработку в управляемом клиентском приложении любой базы. Нажать кнопку "Команда1". При этом выполнится код

СтруктураМалая = Новый Структура("Ф");
СтруктураБольшаяИменаМалые = Новый Структура;
СтруктураБольшаяИменаБольшие = Новый Структура;
Для Сч = 1 По 1000 Цикл
СтруктураБольшаяИменаМалые.Вставить("Ф" + XMLСтрока(Сч));
СтруктураБольшаяИменаБольшие.Вставить("ФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФФ" + XMLСтрока(Сч));
КонецЦикла;
Проходов = 10000;

НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для Сч = 1 По Проходов Цикл
ЗаполнитьЗначенияСвойств(СтруктураБольшаяИменаБольшие, СтруктураМалая);
КонецЦикла;
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
Сообщить("Длительность СтруктураМалая->СтруктураБольшая : " + Длительность);

НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для Сч = 1 По Проходов Цикл
ЗаполнитьЗначенияСвойств(СтруктураМалая, СтруктураБольшаяИменаМалые);
КонецЦикла;
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
Сообщить("Длительность СтруктураБольшаяИменаМалые->СтруктураМалая : " + Длительность);

НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для Сч = 1 По Проходов Цикл
ЗаполнитьЗначенияСвойств(СтруктураМалая, СтруктураБольшаяИменаБольшие);
КонецЦикла;
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
Сообщить("Длительность СтруктураБольшаяИменаБольшие->СтруктураМалая : " + Длительность);

И будут выведены сообщения

Длительность СтруктураМалая->СтруктураБольшая : 26
Длительность СтруктураБольшаяИменаМалые->СтруктураМалая : 393
Длительность СтруктураБольшаяИменаБольшие->СтруктураМалая : 1 726

Видим что длительность выполнения ЗаполнитьЗначенияСвойств() значительно больше, когда источником выступает объект с большим числом свойств и приемником выступает объект с малым числом свойств, сопоставляя с обратным сочетанием параметров. Ожидалось что разницы не будет, т.к. находить общие свойства логично обходом меньшего списка свойств из двух (источника и приемника).


Files

ОтважныйБобр.epf (82 KB) ОтважныйБобр.epf Сергей Старых, 2024-06-14 11:13 AM
clipboard-202406141213-daopp.png (15.3 KB) clipboard-202406141213-daopp.png Сергей Старых, 2024-06-14 11:13 AM
Actions #1

Updated by Сергей Старых about 1 month ago

  • Description updated (diff)

Also available in: Atom PDF