|
22.03.2013, 17:11 | #1 |
Участник
|
axforum blogs: Использование слабых ссылок для повышения производительности
Источник: http://axforum.info/forums/blog.php?b=387
============== Как широко известно, в X++ используется подсчет ссылок в качестве сборки мусора. Причем для того, чтобы собирать циклы (когда объект A ссылается на B а B на A) используется счетчик циклов. Таким образом, каждый раз при присваивании поля класса, аксапта проходит по всем ссылкам и пытается найти циклы чтобы обновить счетчик. Это может быть очень долго. Особенно если есть циклы. Но есть способ сделать ссылку, которая точно не приводит к образованию цикла. Это “слабая ссылка” – класс ObjectIdent. Суть в том, что такая ссылка не удерживает объект на который ссылается и он может быть собран сборщиком мусора. Таким образом, если мы уже знаем что объект уже используется где-то еще и точно не удалится, то мы может сделать на него слабую ссылку (передав его аргументом конструктора ObjectIdent ) а потом добыть его из этой ссылки при помощи метода object. На моем примере, содержащем, кучу циклических ссылок, вышло так:
Под IL быстрее, так как там не используется подсчет ссылок (но и не гарантируется удаление объекта сразу после окончания использования) Источник: http://axforum.info/forums/blog.php?b=387
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|