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Метод ЗаполнитьЗначенияСвойств замедляется при большом числе свойств источника и малом приемника
0%
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