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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2006, 18:16   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент)
Уважаемые коллеги,

Поводом для организации данной ветки послужила дисскуссия отсюда: Какой способ для связи Axapta с Excel вы предпочитаете?

Так вот. Предлагается количественно сравнить скорость экспорта данных из Axapta в Excel при использовании различных способов выгрузки. Все желающие могут поучаствовать в эксперименте. Каждый участник выбирает свой любимый (или нелюбимый – как кому нравится) способ (или способы), «прогоняет» его (их) и вкратце информирует остальных о результатах своих изысканий (можно приложить джоб или проект). Если есть возможность проверить свои способы на разных по характеристикам компьютерах – всячески приветствуется!

Сравнение предлагается производить в сходных (по объему экспортируемых данных) условиях. Вот эти условия:

1. Выводим в Excel данные из двух связанных таблиц: LedgerTrans и LedgerTable.

2. Объем вывода – примерно 50 тысяч записей, 10 полей (список ниже).

3. В Аксапте данные получаем в цикле:
Код:
    LedgerTrans ledgerTrans;
    LedgerTable ledgerTable;
    int timeFullStart, timeFullFinish, timeFullTotal;
    ……………………………
    // засекаем время
    timeFullStart = timenow();
    ……………………………
    while select  ledgerTrans
            join  ledgerTable
            where ledgerTrans.AccountNum == ledgerTable.AccountNum
               && ledgerTrans.TransDate >= str2date('dd.mm.yy',123) && ledgerTrans.TransDate <= str2date('DD.MM.YY',123)
    {
            // 10 полей
            ledgerTrans.RecId  --- >  в Excel, столбец 1
            ledgerTrans.AccountNum --- >  в Excel, столбец 2
            ledgerTable.AccountName --- >  в Excel, столбец 3
            ledgerTable.AccountPlType  --- >  в Excel, столбец 4   
            ledgerTrans.BondBatchTrans_RU ) --- >  в Excel, столбец 5
            ledgerTrans.BondBatch_RU  --- >  в Excel, столбец 6
            ledgerTrans.TransDate  --- >  в Excel, столбец 7
            ledgerTrans.Txt  --- >  в Excel, столбец 8
            ledgerTrans.AmountMST  --- >  в Excel, столбец 9
            ledgerTrans.Crediting  --- >  в Excel, столбец 10
    }
    ……………………………
    timeFullFinish = timenow();
    timeFullTotal = timeFullFinish - timeFullStart;
    info('Время выполнения, сек');
    info(int2str(timeFullTotal));
4. Конкретная реализация алгоритма выгрузки в Excel – естественно, ваша. Куда данные пойдут из цикла – скажем, сразу напрямую в Excel или сначала во временную таблицу – тоже ваша забота.

5. Кол-во выгружаемых записей неявно «задается» путем выполненного заранее подбора начальной и конечной дат в запросе: dd.mm.yy и DD.MM.YY – вы просто подбираете себе такой конкретный диапазон дат, который бы возвращал из вашего LedgerTrans-a примерно 50000 записей (плюс-минус 2-3 тысячи – не вопрос!). Поскольку бизнесы у всех разные, то и разные по жизни темпы наполнения LedgerTrans-a. Про ваши конкретные даты вы, естественно, никому из нас не рассказываете (чтобы шпиёны не могли оценить интенсивность вашей бухгалтерии J) – если только сами не захотите.

6. Рассматриваем только выгрузку средствами самой Аксапты. Доступ напрямую к таблицам БД средствами СУБД (MS SQL Server или Oracle), минуя Аксапту – не рассматриваем.

7. Данные выводим в новую книгу Excel без форматирования, только строка заголовка и дальше данные (начиная с ячейки A2 J). Моментом окончанием исследуемого процесса считается появление всех данных в открытом окне Excel. Время последующего сохранения этой новой книги на диске не учитываем. Если же алгоритм построен так, что данные сначала выводятся на диск (например, как текстовый файл), то этот файл следует открыть и «предъявить» в открытом окне Excel – это время уже учитываем!

Какие результаты интересны? (обсуждаемо):

1. Общее время процесса, в секундах – от момента запуска метода до момента появления всех данных в окне Excel.
2. Время непосредственного вывода в Excel, в секундах - если есть возможность подсчитать время непосредственного вывода в Excel, отделив его от времени выборки данных из таблиц в цикле, то просьба указать это время.
3. Фактическое кол-во выведенных записей (с точностью до 100 вполне достаточно).
4. Версия Excel – 97, 2000, 2002, 2003 (в способе, который буду иллюстрировать я, это оказалось существенным параметром)
5. Версия Axapta.
6. Характеристики компьютера: частота процессора, размер оперативной памяти, «реальная тачка или виртуальная»… что еще?
7. Характеристики локальной сети – пропускная способность… что еще?
8. Конечно, любые ваши дополнительные комментарии.
9. Что еще?

Ну что, изобразим?

Заранее спасибо всем, кто откликнется. Пошёл готовиться и сам…

P.S. Все условия эксперимента обсуждаемы, включая запрос, таблицы, кол-во записей и полей.

Последний раз редактировалось Gustav; 07.06.2006 в 18:27.
За это сообщение автора поблагодарили: mazzy (9), sukhanchik (4), konopello (1).
Теги
benchmark, download, excel, faq, xml, законченный пример, производительность, экспорт/импорт

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta программирует Excel на VBA Gustav DAX: База знаний и проекты 10 13.03.2006 11:42
Использование OWC.Spreadsheet для ускорения экспорта/импорта в/из Excel. storer DAX: Программирование 24 28.03.2005 19:10
Передача данных из 1С в Axapta 3.0 через COM Connector isbist DAX: Программирование 10 03.12.2004 10:58
Особенности экспорта данных в Excel Roman-sp DAX: Функционал 18 01.03.2004 12:07
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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