|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от belugin
![]() Еще есть разные факторы - в .NET используется недетерминированный сборщик мусора, а в X++ детерминированный (он должен убрать мусор сразу как только нет на него ссылок). В результе X++ при каждом присваивании считает циклы - что дает квадратичный, кажется, прирост времени выполнения при присваиваниях полей классов с развесистым графом объектов, например, в разноске больших журналов.
Т.е., например, такой метод : \Classes\InventUpd_Financial\parmLedgerVoucher X++: LedgerVoucher parmLedgerVoucher(LedgerVoucher _ledgerVoucher = ledgerVoucher)
{
;
ledgerVoucher = _ledgerVoucher;
return ledgerVoucher;
} X++: LedgerVoucher parmLedgerVoucher(LedgerVoucher _ledgerVoucher = null) { ; if ( !prmIsDefault(_ledgerVoucher) ) { ledgerVoucher = _ledgerVoucher; } return ledgerVoucher; } |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Ищущий знания...
|
Цитата:
Подробностей уже не помню, но точно помню, что закономерности в сбоях этой функции так и не нашел...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#5 |
Участник
|
Цитата:
Не факт, что присваивани, которое не изменяет полей объектов приводит к пересчету циклов. Попробуйте провести эксперимент. |
|
![]() |
#6 |
Участник
|
Цитата:
Когда я оптимизировал разноску закупки с 1000 строк и 8000 записей в логе корреспонденции, то выполнение этого метода \Classes\InventUpd_Financial\parmLedgerVoucher Стабильно длилось примерно 4,5 миллисекунды. Мелочь, конечно, можно и внимания не обращать, но для простого копирования ссылки все же многовато. |
|
Теги |
.net, x++, полезное, сборка мусора |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|