27.10.2016, 12:40 | #1 |
Боец
|
AX2012 X++ Comparison tool works slowly?
A useful hint how to improve performance of X++ comparison tool for AX2012: Just try to turn-on the parameter “Execute business logic in CIL” in your profile, it’ll compare elements extra fast.
It’s a common case when developers keep this option OFF that pushes Comparison tool to be executed in classic X++ mode instead of CIL. Some details: \Classes\SysCompareText\run Вложение 11024 Последний раз редактировалось DSPIC; 28.09.2017 в 01:50. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (3), MikeR (2), alex55 (1). |
27.10.2016, 13:04 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (3), MikeR (2). |
27.10.2016, 16:57 | #3 |
Участник
|
В 2012-й не исследовал, но в 2009-й еще могло тормозить на больших объектах которые лежат на куче слоев. Например, есть SalesTable табличка с кучей кастомизаций и большим числом методов. Аксапта при формировании комбобоксов для сравнения грузит в память treenode из каждого слоя (примерно 5 штук) и из каждого old слоя - еще 5 штук. И зачем-то делает это дважды. На этом может теряться секунд 20-40 - зависит от нагрузки на сервера. Можно это место оптимизировать - подгружая в память treenode объекта со слоя не сразу, а только когда (и если) он вообще понадобится. Но это модификация не на пару строк кода.
|
|
27.10.2016, 18:23 | #4 |
MCTS
|
Цитата:
Сообщение от DSPIC
A useful hint how to improve performance of X++ comparison tool for AX2012: Just try to turn-on the parameter “Execute business logic in CIL” in your profile, it’ll compare elements extra fast.
It’s a common case when developers keep this option OFF that pushes Comparison tool to be executed in classic X++ mode instead of CIL. |
|
27.10.2016, 23:18 | #5 |
Боец
|
не препятствует. Главное чтобы CIL был собран в области компаратора.
|
|
28.10.2016, 01:23 | #6 |
Британский учённый
|
Плохая идея - без работающего CIL не будет работать. У меня чекбокс на форме которая выставляет глобальную переменную, которая в свою очередь игнорирует настройки пользователя для сравнения. Проблема в том, что когда нужно много и долго сравнивать (после апгрейдов и хотфиксов) CIL то как раз и не рабочий. Так что всё как обычно - красиво в теории и бесполезно на практике У меня всё руки не доходят прикрутить сравнение с помощью VS.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
28.10.2016, 10:56 | #7 |
MCTS
|
Могли бы пояснить что имеется в виду? Перед тем как что-то сравнить нужно сначала это что-то откомпилить в CIL, чтобы сравнение работало с включенной галкой выполнять в CIL?
|
|
28.10.2016, 11:25 | #8 |
MCTS
|
Собственно там в комментах как раз ссылка на статью с примером реализации исключения компаратора из проверки глобального параметра выполнять в CIL. Только ссылка битая, вот нормальная: Do yourself a favor, and make this change on your Dev system - https://community.dynamics.com/ax/b/...our-dev-system
|
|
|
За это сообщение автора поблагодарили: Logger (1). |
28.10.2016, 11:48 | #9 |
Британский учённый
|
Я про то, что если вы захардкодите выполнение в CIL а он у вас не рабочий, к примеру после установки хотфикса - при попытке сравнить будет вылетать ошибка и придется убирать код, что бы заработало.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
28.10.2016, 12:57 | #10 |
MCTS
|
Цитата:
Единственно мне пока не совсем понятно в какой именно части должен быть нерабочим CIL, чтобы перестало работать сравнение через CIL: в любой или только в части данного класса и объектах которые он использует? Мне казалось что второе верно, но для меня это вообще очень редкий кейс. Последний раз редактировалось alex55; 28.10.2016 в 13:02. |
|
28.10.2016, 14:19 | #11 |
Британский учённый
|
Цитата:
Сообщение от alex55
Вообще я про хардкод ничего не писал. Принудительное выполнение можно и через новый параметр реализовать, идея была в том чтобы от глобального параметра отвязаться. Но спасибо за полезное замечание.
Единственно мне пока не совсем понятно в какой именно части должен быть нерабочим CIL, чтобы перестало работать сравнение через CIL: в любой или только в части данного класса и объектах которые он использует? Мне казалось что второе верно, но для меня это вообще очень редкий кейс. Ну например у меня недавно было после восстановления из бэкапа и установки хотфиксов. Сравнение не работало пока не переключил на xpp. Поэтому я бы не советовал подход автора Do yourself a favor, and make this change on your Dev system, а делал бы сразу через отдельный параметр. Надеюсь теперь все точки расставил...
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
28.10.2016, 14:49 | #12 |
MCTS
|
Цитата:
Сообщение от Link
У меня принудительно ассоциируется с кодом, а параметр с гибким подходом.
Ну например у меня недавно было после восстановления из бэкапа и установки хотфиксов. Сравнение не работало пока не переключил на xpp. Поэтому я бы не советовал подход автора Do yourself a favor, and make this change on your Dev system, а делал бы сразу через отдельный параметр. Надеюсь теперь все точки расставил... |
|
Теги |
syscompareform, полезное, сравнение объектов, сравнение слоев |
|
|