|
![]() |
#1 |
Участник
|
Не совсем понимаю, в чем проблема.
А что вы подразумеваете под Managed языком ? Последний раз редактировалось Logger; 23.08.2011 в 17:57. |
|
![]() |
#2 |
Участник
|
Цитата:
Проблема была в том, что МС не хотели ламать то, что уже было в АХ. Они просто берут Р код, созданный компилятором, и его переводят потом в MSIL, а MSIL, как известно, может быть интерпритирован в любой язык, поддерживаемый .NET платформой. Но сам по себе X++ так и не стал "новым официальным языком .NET". ![]() Это было скорее стратегиское решение. Думаю что в последующих версиях X++ будет становиться все меньше и меньше, пока они полностью не перейдут на Managed код.
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
![]() |
#3 |
Участник
|
Интересно, что это происходит через XML каковой можно получить через API. То есть на DictXXX классах есть методы, представляющие P-Code в виде XML.
|
|
![]() |
#4 |
Участник
|
Где-то проходила инфа что x++ чуть ли не Visual Studio появится. Возможно передумали.
|
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от plumbum
![]() Класический пример плохой работы сборщика мусора в АХ, это перекрестные ссылки между деревом и элементами дерева:
Dynamics AX Performance issue. Cross object references drawbacks По-моему, больше похоже на проблемы с быстродействие самого TreeView при большом количестве элементов и уровне вложенности. И с большим расходом памяти на непонятно зачем нужные объекты (я про хранение ссылок на FormTreeItem) Цитата:
Сообщение от plumbum
![]() Подробная информация о сборке мусора в X++ и .NET тут
Что это за циклы в каждом присваивании на X++?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#6 |
Участник
|
Была в блоге команды разработчиков X++ статья X++: Garbage Collection and Ax Performance Whitepaper (занятно, сейчас ее в блоге не найти), там объяснялось, что детерминированный сборщик мусора в X++ поддерживает для каждого объекта два счетчика: один - для учета ссылок на объект (reference count) и второй - для учета "петель" ссылок (loop count), в которых участвует объект.
![]() Объект не подлежит уничтожению до тех пор, пока число ссылок на него больше числа "петель" ссылок, в которых он участвует. Так вот, при каждом присваивании переменной ссылки на тот или иной объект сборщик мусора должен не только увеличить счетчик ссылок на этот объект, но и по графу ссылок между объектами пересчитать счетчик "петель" для него. А длительность последней операции с увеличением числа связанных между собой объектов имеет тенденцию расти экспоненциально. ![]() Последний раз редактировалось gl00mie; 24.08.2011 в 00:30. Причина: еще картинка |
|
|
За это сообщение автора поблагодарили: Logger (5), plumbum (1), Mileyko (1). |
![]() |
#7 |
Участник
|
Цитата:
Не уловил, в чем здесь пример плохой работы GC.
К сожалению не нашел сразу ссылку на вышеуказанную статью. Моя ссылка на MSDN подтверждала то, что GC в X++ детерминированный (там так и было написано). Вот сейчас из блогов пришла статья о возможности скомпилировать X++ в IL. X++ in the .NET CLR : Life in the Fast Lane Там ремарка, о том, что при отладке IL, созданного из X++, код последнего выбирается фактически из AOT, а вот выполняется как раз прекомпилированная сборка. Я так понимаю, что обратное преобразование из IL в X++ не реализовано. Посему и не считаю что X++ таки стал Managed .NET Language.
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! Последний раз редактировалось plumbum; 24.08.2011 в 01:14. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
![]() |
#9 |
Участник
|
Ужас.
Не знал про такие глюки. Может вспомните при каких условиях было ? |
|
![]() |
#10 |
Ищущий знания...
|
Цитата:
![]() По результатам отпишусь.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#11 |
Участник
|
Вы не путаете со случаем когда в качестве параметра передается значение совпадающее со значением по умолчанию ? В таких случаях prmIsDefault() возвращает false и это правильно. Т.е. эта функция не просто значения сравнивает, а на самом деле смотрит передано что-то было или нет.
|
|
![]() |
#12 |
Ищущий знания...
|
Цитата:
В памяти есть некие смутные воспоминания с чем это было связано, но пока не проверю не хочу озвучивать, что бы не сбивать общественность с толку ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#13 |
Ищущий знания...
|
Цитата:
Одно из трех,
надеюсь, что это третий вариант ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#14 |
Участник
|
Цитата:
Сообщение от lev
![]() Погонял разные варинаты использования этой функции, никаких проблем не выявилось...
Одно из трех,
надеюсь, что это третий вариант ![]()
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
![]() |
#15 |
Ищущий знания...
|
Цитата:
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: Logger (3). |
![]() |
#16 |
Участник
|
на чистой 3ке без сп и кр проверяли?
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
Теги |
.net, x++, полезное, сборка мусора |
|
|