Показать сообщение отдельно
Старый 20.11.2009, 09:36   #10  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от miklenew Посмотреть сообщение
У меня получилось 28 и 46 секунд соответственно.
Тестировал в AX 2009. Запускал job 2 раза. У меня получился примерно тот же порядок - while select быстрее queryRun на 50%...
X++:
static void JobQR(Args _args)
{
    LedgerTrans ledgerTrans;
    AccountNum  accountNum;
    int         start;
    int         end;
    
    void queryWhileSelect()
    {
        while select ledgerTrans
        {
            accountNum = ledgerTrans.AccountNum;
        }
    }
    
    void queryQueryRun()
    {
        Query       q;
        QueryRun    qr;
        LedgerTrans ledgerTransLocal;
        ;
        q = new Query();
        q.addDataSource(tablenum(LedgerTrans));
        qr = new QueryRun(q);
        while (qr.next())
        {
            ledgerTransLocal = qr.get(tablenum(LedgerTrans));
            accountNum = ledgerTransLocal.AccountNum;
        }
    }
    ;
    
    start = timenow();
    queryWhileSelect();
    end = timenow();
    info("while " + time2str(end-start,1,1));
    
    start = timenow();
    queryQueryRun();
    end = timenow();
    info("queryRun " + time2str(end-start,1,1));
}

Последний раз редактировалось _scorp_; 20.11.2009 в 09:38.