AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.09.2007, 07:39   #1  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
Задача оптимизации
Я в работе с внутренним проектом столкнулся с проблемой отображения элементов АОТа в FormTreeControl’е Аксапты. Суть в следующем: есть форма SysAOTBrowser. Это лукап форма для выбора элемента АОТа. Все в ней ничего кроме скорости первого раскрытия узлов дерева. К примеру если первый раз раскрыть ветку \Classes то проходит порядка 5 секунд прежде чем все классы отобразятся в дереве. Это очень долго и нужно сделать это время как можно меньше. То есть суть задачи - сделать как можно меньше время тупого ожидания пользователя пока система «продумается».

Geändert von rusalaudinov (04.09.2007 um 07:43 Uhr)
Alt 04.09.2007, 09:10   #2  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von rusalaudinov Beitrag anzeigen
К примеру если первый раз раскрыть ветку \Classes то проходит порядка 5 секунд прежде чем все классы отобразятся в дереве.
Правильно заданный вопрос - половина ответа.
5 секунд проходит не просто так.

В этот момент Аксапта подгружает элементы на клиента.
Впоследствии берет из кэша.

Вы можете попробовать поиграться с кэшем
http://axapta.mazzy.ru/lib/aoscash/
Но если ведется большая разработка, то этот способ не очень поможет
__________________
полезное на axForum, github, vk, coub.
Alt 04.09.2007, 10:05   #3  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Не пробовал.
Может сделать что-то типа
X++:
    dict = new Dictionary();

    for(i = 1; i < dict.classCnt(); i++)
    {
        dictClass = new dictClass(dict.classCnt2Id(i));
    }
при загрузке системы.

Чтобы сразу структура АОТ подтянулась в кэш..

P.S. Проверил. Не помогает

Geändert von kashperuk (04.09.2007 um 10:11 Uhr)
Alt 04.09.2007, 11:50   #4  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Кстати, если посмотреть форму SysAOT, видим намного более высокую производительность.
Alt 05.09.2007, 06:40   #5  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
MAzzy, игру с кешем не осилил. вообще не нашел у себя на компьютере файлы *.aoc.
kashperuk, сделал как в форме SYSAOT, стало работать быстрее. КРУТО.
Alt 06.09.2007, 10:59   #6  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
короче всё-равно недостаточно быстро. возникла такая идея. короче чтоб при разворачивании классов система загружала и отображала только ту часть, которая видима в окне. при прокручивании скроллингом подгружалась маленько вновь. такое реально реализовать? как поступить?
Alt 06.09.2007, 11:05   #7  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von rusalaudinov Beitrag anzeigen
короче...
Ну... Если вы считаете, что это "короче", то "легко".
Берете и программируете.
Для начала определите высоту окна и количество строк, которое в нем помещается.
Потом перехватываете события прокрутки (не забудьте о клавиатуре, мыши и о колесике)
Потом делаете хитрую (smart - интеллектуальную) загрузку, которая помнит что загружено, а что не загружено.
А потом осталось обеспечить, чтобы ваш многокилометровый код работал быстрее, чем работает ядро

В общем, "легко".
Несомненно это будет "короче", ведь разбираться с кэшем, находить какие-то мутные aoc-файлы - это так "длинно".
__________________
полезное на axForum, github, vk, coub.
Alt 06.09.2007, 11:06   #8  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Ну, в принципе можно что-то подобное сделать.
Упростив немного

1. Подгружаем максимум 30 узлов за раз. (первый раз тоже)
2. Появляются кнопочки далее и до конца (для примера смотри кнопки в SQL Server при выборке).
3. Для этого всего нужно итератор постоянно в памяти хранить. Не знаю, как это скажется.
4. Кнопочки вверх не нужны. Тут уже будет скроллинг работать. Тормозов при этом не будет, так как эта часть дерева уже построилась
Alt 06.09.2007, 11:17   #9  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
Еще можно кешировать состав узлов АОТа самостоятельно в файле или табличке.
Alt 06.09.2007, 11:19   #10  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von belugin Beitrag anzeigen
...или табличке.
Например, ...та-да!!!... в стандартной UtilElements!

Но что я говорю! Ведь эта табличка кэшируется в каком-то мутном aoc-файле, который сложно найти.
Несомненно нужно создавать собственную табличку и создавать собственный алгоритм кэширования.
__________________
полезное на axForum, github, vk, coub.
Alt 06.09.2007, 11:36   #11  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
Zitat:
Zitat von mazzy Beitrag anzeigen
Например, ...та-да!!!... в стандартной UtilElements!
Есть ли у тебя код, который работает также быстро, как и нажатие на + в Classes?

Мне кажется, что есть некая магия в AOTе. Например, нажатие на F12 в редакторе как правило, неприемлемо тормозит, а F2 при прогретом кеше выводит список мнгновенно...
Alt 06.09.2007, 11:39   #12  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von belugin Beitrag anzeigen
Мне кажется, что есть некая магия в AOTе.
А еще первый раз очень долго создает новый программисткий проект
__________________
полезное на axForum, github, vk, coub.
Alt 06.09.2007, 12:08   #13  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
Zitat:
Zitat von mazzy Beitrag anzeigen
А еще первый раз очень долго создает новый программисткий проект
...из меню. Если нажать Ctrl+N - то быстро
This post has been rated by: mazzy (5).
Alt 06.09.2007, 12:11   #14  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von belugin Beitrag anzeigen
...из меню. Если нажать Ctrl+N - то быстро
О! Класс. Спасибо
__________________
полезное на axForum, github, vk, coub.
Alt 06.09.2007, 12:14   #15  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Zitat:
Zitat von mazzy Beitrag anzeigen
О! Класс. Спасибо
А если пользоваться вот этим:
Kashperuk Ivan: DEV_CreateNewProject tool version 2.0.0
то помимо скорости еще и группы посоздает все.

Кстати, про Ctrl+N уже говорилось
[ANN] Tabax 0.1 -- панель задач для Axapta
Alt 07.09.2007, 12:26   #16  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
mazzy, че ты взъелся то. я не говорил что файлы мутные и не говрил короче в том смысле, в котором ты его интерпретировал.
Собственно говоря размышления привели к тому, что загружать 30 узлов и жать кнопочку снова это не дело. На работе мне подсказали что нужно обратить свой взор на работу с потоками. типа создать отделый поток в котором будет происходить загрузка данных, но который не будет мешать работе основного приложения....короче не знаю насколько понятно я объяснил. лично я никогда дел с потоками не имел и не представляю как оно работает. никто не скажет где можно посмотреть матчасть по этому вопросу, чтобы понять как оно работает и собственно откуда че берется.
Alt 07.09.2007, 12:38   #17  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
в 3.0 потоки не рекомендуется использовать, зотя я знаю людей, у которых они пашут

База знаний ERP : Axapta / нить
Alt 07.09.2007, 12:47   #18  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
у меня 4.0
Alt 07.09.2007, 21:12   #19  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
rusalaudinov, посмотрите функциональность Data Crawler. Там используются threads, насколько я понимаю. В 3.0 тоже.

belugin, а можно для общего развития? Есть более конкретная информация про проблемы со threads в 3.0?
__________________
С уважением,
glibs®
Alt 10.09.2007, 12:56   #20  
rusalaudinov ist offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Registriert seit: 24.05.2007
вот смотрите. допустим у меня есть класс в котором создан новый поток. допустим есть никак не связанная с ним форма. могу ли я запустить на выполнение метод этой формы в созданном в классепотоке? или есть другой(более простой и удобный) способ запустить метод в отдельном потоке?
Stichworte
aoc, aot, как правильно, кэширование, тормоза

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Задача: запретить удалять строки разнесённых журналов. jeky DAX: Программирование 12 28.01.2009 22:22
Тормоза после оптимизации базы Alenka DAX: Администрирование 5 11.04.2008 19:37
Казалось бы, простая задача... konfet DAX: Программирование 5 05.04.2007 16:58
Задача оптимизации загрузки производственых мощностей SevA DAX: Программирование 23 01.11.2004 18:12
Дополнительные модули для задач оптимизации. NJD DAX: Прочие вопросы 1 26.10.2003 19:45

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:26 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.