AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.02.2007, 12:58   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Еще информация для размышлений:

Вот job для экспериментов
X++:
static void tutorial_Job_getMemAlloc(Args _args)
{
    HeapCheck heapHeck = new HeapCheck();
    int allocFirst;
    Set set1;
    Set set2;
    Set set3;
    int i;
    timeOfDay time1;
    TmpInventTable tmpIT;
    Counter recIdCount;
    ;
    recIdCount = 40000;
    allocFirst = heapHeck.bytesAllocated();
    info(strfmt("%1 - До заполнения", allocFirst));

    time1 = timeNow();
    set1 = new Set(Types::Integer);
    for (i = 1; i <= recIdCount; i++)
        set1.add(i);
    allocFirst = heapHeck.bytesAllocated();
    info(strfmt("%1 - %2сек - заполнили Set(Types::Integer)", allocFirst, timeNow() - time1));

    time1 = timeNow();
    set1 = new Set(Types::String);
    for (i = 1; i <= recIdCount; i++)
        set1.add(strFmt("Item%1", i));
    allocFirst = heapHeck.bytesAllocated();
    info(strfmt("%1 - %2сек - заполнили Set(Types::String)", allocFirst, timeNow() - time1));

    time1 = timeNow();
    for (i = 1; i <= recIdCount; i++)
    {
        tmpIT.ItemId = strFmt("Item%1", i);
        tmpIT.insert();
    }
    allocFirst = heapHeck.bytesAllocated();
    info(strfmt("%1 - %2сек - заполнили временную таблицу из одного поля - ItemId", allocFirst, timeNow() - time1));
}
Вот мои результаты: (40000 элементов)
28 939 792 - До заполнения
30 413 632 - 1сек - заполнили Set(Types::Integer)
30 401 280 - 1сек - заполнили Set(Types::String)
32 763 840 - 13сек - заполнили временную таблицу из одного поля - ItemId

Обращу внимание на время, требуемое для заполнения временной таблицы таким большим кол-вом записей. SET заполняется почти мгновенно. (правда у других проверяющих время заполнения меньше для таблицы - видимо это связано с тем, что винт у меня на ноутбуке не очень быстрый)

Оговорка:
Результаты по выделению памяти приблизительные, так как
Цитата:
Сообщение от AndyD
Память выделяется кусками. Т.е. если объект в памяти занимает меньше места, чем свободно - то выделение не происходит, а размещается в свободном куске
Для небольшого числа записей разница настолько мала, что измерить не удалось

Анализ результатов (краткий):
первые два заполнения - 2 Мб выделилось приблизительно, (на двоих)
на табличку - еще столько же где-то.

Учитывая это и время заполнения, использование временной таблицы ставится под вопрос.
+ большой конечно, что можно ее потом использовать в запросах. Правда и в этом нужно быть осторожным, так как нужно учитывать, где формировалась эта таблица (первая запись).

У кого какие соображения?
За это сообщение автора поблагодарили: EVGL (3).
Теги
download, как правильно, полезное, производительность, axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Kashperuk Ivan: Microsoft Dynamics AX 2009 Keyboard shortcuts Blog bot DAX Blogs 5 18.12.2013 18:24
Kashperuk Ivan: My first attempts in Dynamics AX 4.0 SP1 Blog bot DAX Blogs 19 28.08.2009 15:48
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Kashperuk Ivan: Now I am a MCBMSS in Dynamics AX Blog bot DAX Blogs 0 07.05.2007 18:40
Kashperuk Ivan: Dynamics AX Tutorials - Tutorial 2 - Classes\Box Blog bot DAX Blogs 0 25.04.2007 22:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:26.