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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.03.2005, 17:02   #1  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
? Тормозит ли градусник???
Привет люди добрые!

Запустил тут очередную фигулину по исправлению фигни, сижу и гадаю во сколько я сегодня домой попаду???

Вроде в коде почти все соптимизировано, ан нет подождать 4 часа придется пишет...
Решил проверить нельзя ли ещё где порыть... результатом изыскания является жоп ниже.
При раскомментаривании строки setText, получается что я бы сегодня домой часов в 7 ушел... Почти в 2 раза, млин... Я как ни-ть не так прогрессом пользуюсь???

PHP код:
static void Job24(Args _args)
{
    
ReqItemTable it;
    
SysOperationProgress    progr = New SysOperationProgress();
    ;
    
select count(recidfrom it;
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
//progr.setText("");
        
progr.incCount();
    }

За это сообщение автора поблагодарили: vladz (1).
Старый 21.03.2005, 17:30   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,253 / 980 (37) +++++++
Регистрация: 03.04.2002
А ты фигулину протестируй, если нормально фурычит, то запусти ее и домой иди. К утру как раз фигню пофиксит.
__________________
Isn't it nice when things just work?
Старый 22.03.2005, 09:57   #3  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
У SysOperationProgress есть параметр updateInterval. По умолчанию он равен 1. Это означает, что окошко с прогресс-баром перерисовывается каждую секунду. Попробуйте поменять этот параметр.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 22.03.2005, 11:26   #4  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Изначально опубликовано Maxim Gorbunov
У SysOperationProgress есть параметр updateInterval. По умолчанию он равен 1. Это означает, что окошко с прогресс-баром перерисовывается каждую секунду. Попробуйте поменять этот параметр.
Пробовал... Практически не влияет
А вот если settext убрать - почти в два раза быстрей работает
Старый 22.03.2005, 11:38   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
а может еще и incCount убрать и тогда вообще за 5 мин отработает?
Старый 22.03.2005, 12:59   #6  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Изначально опубликовано Wamr
а может еще и incCount убрать и тогда вообще за 5 мин отработает?
Может для всех это очевидные вещи, но я существо любопытное до неприятностей

Итак дано: тестовый сервак. На нем кроме меня, аксапты, сиквела и какой-то матери никого нет. Запускаю в терминалке в 2-х звенке. 3.0 sp 2. Тех хар-ки думаю не принципиальны, скажем так "Неплохой сервак с 3 гигами, 2 процами и т.п."

Записей в таблице 1740254 штук.

В тиках мерять не умею, не выпендривайтесь

Ниже - "жопы" и время их выполнения:
PHP код:
static void Job24(Args _args)
{
    
InventJournalTrans it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
//progr.setText("");
        //progr.incCount();
    
}
    
info(time2str(TimeNow()-t,0,0));
}

---
Info =  00:54

static void Job24(Args _args)
{
    
InventJournalTrans it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
//progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

---
Info =  03:46

static void Job24(Args _args)
{
    
InventJournalTrans it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    
progr.updateInterval(60);
    While 
select RecId from it
    
{
        
//progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

---
Info =  03:44

static void Job24(Args _args)
{
    
InventJournalTrans it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    
progr.updateInterval(60);
    While 
select RecId from it
    
{
        
progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

---
Info =  05:57

static void Job24(Args _args)
{
    
InventJournalTrans it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    
//progr.updateInterval(60);
    
While select RecId from it
    
{
        
progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

---
Info =  05:35 
Старый 22.03.2005, 13:22   #7  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,253 / 980 (37) +++++++
Регистрация: 03.04.2002
Секретное оружие разработчика, профайлер:
#Profilebegin("название сессии профайлера")
// исследуемый код
#ProfileEnd

Результат можно посмотреть в Сервис\Средства разработки\Профайлер\Сессии профайлера.
P.S. В вашем случае, на фоне обработки 1740254 записей, даже максимальные затраты на прогресс-бар, в 05:35 ничтожно.
__________________
Isn't it nice when things just work?
Старый 22.03.2005, 13:37   #8  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Изначально опубликовано macklakov
Секретное оружие разработчика, профайлер:
#Profilebegin("название сессии профайлера")
// исследуемый код
#ProfileEnd

Результат можно посмотреть в Сервис\Средства разработки\Профайлер\Сессии профайлера.
P.S. В вашем случае, на фоне обработки 1740254 записей, даже максимальные затраты на прогресс-бар, в 05:35 ничтожно.
Ничего не понял.... Т.е. Вы хотите сказать что он у меня и на 10 миллионах те же 5 минут съест??? Ладно, сейчас натравлю на 10 миллионов... посмотрим так ли "ничтожны" эти затраты будут...

ЗЫ: 2 программисты, палками не бить, я в этом не разбираюсь :
- правильно я предполагаю, что градусник запускается в каком-ть отдельном процессе и куча времени уходит на общение между процессами???
Старый 22.03.2005, 13:45   #9  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,253 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Изначально опубликовано Recoilme
Т.е. Вы хотите сказать что он у меня и на 10 миллионах те же 5 минут съест??? Ладно, сейчас натравлю на 10 миллионов... посмотрим так ли "ничтожны" эти затраты будут...
Неравильно Вы меня поняли, на десяти миллионах он больше съест, но по сравнении со временем на преобразование данных, это время не существенно.
__________________
Isn't it nice when things just work?
Старый 22.03.2005, 19:03   #10  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Йоу!! Я то думал там всё так круто, что даже стеснялся заглянуть, а там....

Вобщем градусник пресчитывается на каждый inccount, хотя реально прогесс бар рефрешится ТОЛЬКО на каждый процент...

Во вложении градусник (VKUL_SysOperationQuick), который, рефрешится на каждый процент, т.е. типа не тормозит

Добавлены методы:
- incCountQuick() аналог обычного incCount, только работает быстро
- updateCount() - для любителей экстремального разгона задает КОЛИЧЕСТВО записей после которого вызывать рефреш. Если параметр не задан - рефрешится будет каждый 1% записей.
- setText не переопределял, ибо некогда.. Погоняю класс, если всё ок - модифицирую базовый класс и там посмотрим. Другими словами settext тормозит по прежнему.

По поводу мнения, что в общем объеме вычислений затраты на тормоза градусника потеряются - доложу завтра. Сильно сомневаюсь ибо не оптимист я по отношению к быстродействию Аксапты Как раз мне себестоимость за пол года пересчитать надо

Ниже результаты тестов. 2 поледних жопа- с использованием быстрого градусника.

PHP код:
static void Job24(Args _args)
{
    
reqitemtable it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
it.RecId;
      
//  progr.setText("");
      //  progr.incCount();
    
}
    
info(time2str(TimeNow()-t,0,0));
}

-- 
info 10:52

static void Job24(Args _args)
{
    
reqitemtable it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
it.RecId;
        
progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

-- 
info 46:31

static void Job24(Args _args)
{
    
reqitemtable it;
    
VKUL_SysOperationProgressQuick    progr = New VKUL_SysOperationProgressQuick();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
it.RecId;
       
// progr.setText("");
//        progr.incCount();
        
progr.incCountQuick();
    }
    
info(time2str(TimeNow()-t,0,0));
}

-- 
info 16:36

static void Job24(Args _args)
{
    
reqitemtable it;
    
VKUL_SysOperationProgressQuick    progr = New VKUL_SysOperationProgressQuick();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    
progr.updateCount(1000000);
    While 
select RecId from it
    
{
        
it.RecId;
       
// progr.setText("");
//        progr.incCount();
        
progr.incCountQuick();
    }
    
info(time2str(TimeNow()-t,0,0));
}

[
B] -- info 10:40 !!![/B
:-\

ЗЫ: записей 10 миллионов
Вложения
Тип файла: xpo vkul_sysoperationprogressquick.xpo (3.1 Кб, 409 просмотров)
Старый 23.03.2005, 09:35   #11  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано Recoilme
Вобщем градусник пресчитывается на каждый inccount, хотя реально прогесс бар рефрешится ТОЛЬКО на каждый процент...
Это если smooth = true. Не знаю, как у Вас, но у меня в SysOperationProgress.update() в самом начале стоит такое вот условие:
PHP код:
if (force || smooth || time >= updateTime updateInterval
force = false по умолчанию. smooth, по идее, тоже false по умолчанию. Соответственно, работает третье условие.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 23.03.2005, 15:12   #12  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Надоело ковыряться...
Что там тормозит -
Модифицировал у себя базовый класс на тестовой версии.. На каких то операциях также.. на каких то 10 минут.. на каких-то часы набегают Правда хотелось чуда, его не произошло..
Главное что не медленней

Вобщем я доволен, всем спасибо.

На случай если кому охота поковыряться - во вложении модифицированный базовый класс.

На свой страх и риск как говорится... Сам на боевую не накатываю пока..

После установки необходима инкрементная компиляция!
Вложения
Тип файла: xpo vkul_sysoperationprogressquick (1).xpo (14.5 Кб, 466 просмотров)
Старый 09.08.2007, 18:07   #13  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от mazzy Посмотреть сообщение
Еще один неразобравшийся, блин... Recoilme, прочитайте ту ветку до конца.
Не хотите использовать - не используйте.
2 Mazzy:
Сергей - твоя категоричность - убивает всякое желание спорить с тобой...
Выполни, пожалуйста, эти 2 джоба на БД с десятком милионов записей:
Джоб 1:
PHP код:
static void Job24(Args _args)
{
    
reqitemtable it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
it.RecId;
      
//  progr.setText("");
      //  progr.incCount();
    
}
    
info(time2str(TimeNow()-t,0,0));

Джоб 2:

PHP код:
static void Job24(Args _args)
{
    
reqitemtable it;
    
SysOperationProgress    progr = New SysOperationProgress();
    
timeofday   t;
    
int         i;
    ;
    
select count(recidfrom it;
    
TimeNow();
    
progr.setTotal(it.RecId);
    While 
select RecId from it
    
{
        
it.RecId;
        
progr.setText("");
        
progr.incCount();
    }
    
info(time2str(TimeNow()-t,0,0));
}

-- 
info 46:31 
Потом залей модифицированный мной класс и сравни быстродействие джоба 2.
Тормозит ли градусник???
Updateinterval - поставь на своё усмотрение

Тогда эту будут утверждения подтвержденные практикой, а не абстрактные
Цитата:
Recoilme, прочитайте ту ветку до конца.
Я, извините, привык доверять только своим глазам.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 09.08.2007, 18:20   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Перенес предыдущее сообщение recoilme обратно в эту ветку.

Цитата:
Сообщение от Recoilme Посмотреть сообщение
Я, извините, привык доверять только своим глазам.
__________________
полезное на axForum, github, vk, coub.
Старый 09.08.2007, 18:30   #15  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от mazzy Посмотреть сообщение
Это намек на то что я тупой??
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 09.08.2007, 18:34   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
это я тупой.
оказывается было другое обсуждение
вот здесь AndyD хорошо объяснил Какие проблемы у SysOperationProgress?
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
После смены версии клиента тормозит класс SysFormTreeControl egorych DAX: Программирование 0 29.08.2007 15:30
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Тормозит прогнозное планирование Perc DAX: Администрирование 15 30.01.2007 23:08
Тормозит форма складских проводок chel DAX: Администрирование 9 08.08.2005 16:46
display метод тормозит Woland DAX: Программирование 4 28.03.2005 14:49

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

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

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