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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2007, 12:25   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Array vs Map
Вообще, это похожие структуры - коллекции.

Насколько можно судить из работы класса Array, при вставке записи по большому индекску, генерируются дефолтные значения для всех индексов с незаполненными значениями до него.
То есть если в качестве индекса для массива использовать recId текущей записи (потому что нам все таки нужно уникальная идентификация строки), то массив будет всегда получаться очень большой.

Можно выполнить нижеприведенный job для сравнения.
И как говорится, извините, если Ваша Ахапта упадёт из-за Out of Memory во втором случае
X++:
static void Job35(Args _args)
{
    Array   arr = new Array(Types::Integer);
    Map     map = new Map(Types::Integer, Types::Integer);
    ;
    map.insert(92332432, 32432);
    print "map inserted";
    pause;
    print map.lookup(92332432);
    print map.exists(32432);
    print map.exists(1);
    pause;


    arr.value(92332432, 32432);
    print "Array inserted";
    pause;
    print arr.value(32432);
    print arr.value(1);
    print arr.exists(250);
    pause;
}
Более того, в DAX 4.0 тип для индекса остался int, в то время, как тип для RecId стал Int64. То есть использовать RecId в качестве индекса на 4ке уже не корректно.

С Map таких проблем нет, так как мы сами указываем тип ключевого поля. и они вставляются последовательно (сортированно), и значение ключевого поля не пугает величиной.

------
Но, и в том и в другом случае при переходе между строками, необходимо делать проверку существования значения, что сказывается на производительности.
+ кушает память (при большом кол-ве записей, если мы пройдемся по ним)

Я использую Map, когда необходимо выбрать небольшое кол-во значений. Но это - IMHO.

Последний раз редактировалось kashperuk; 07.04.2007 в 12:42. Причина: Добавил шутку :)
За это сообщение автора поблагодарили: belugin (6).
Теги
display метод, grid

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
OFF display метод в grid.... velk DAX: Программирование 5 14.11.2006 15:28
display-метод Pavel Pustovalov DAX: Программирование 9 21.03.2006 10:03
Можно ли в display методе узнать для какого FormControl'а этот метод вызван? Dudnik Anton DAX: Программирование 3 01.02.2006 12:22
display метод с параметром Андре DAX: Программирование 5 11.01.2006 19:04
display() method on Grid Control DK DAX: Программирование 5 31.01.2003 22:09

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

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

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