AXForum  
Go Back   AXForum > Рынок > Сравнение ERP-систем
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 19.09.2008, 13:57   #1  
mit is offline
mit
Участник
mit's Avatar
 
386 / 36 (2) +++
Join Date: 15.01.2003
Location: Moscow
DAX vs 1C
Что-то пришла мне в голову мысль сравнить скорость работы Аксапты и 1С. Написал простой тест:
PHP Code:
//*******************************************
Функция Д(н)
     
Возврат н 1;
КонецФункции
//*******************************************
Процедура Сформировать()
     
М 5000000;
     
й 0;
     
Пока й М Цикл
          й 
Д(й);
     
КонецЦикла;
КонецПроцедуры 
В Аксапте:
PHP Code:
    int iM;
    
int f(int n)
    {
        return 
1;
    }
;
    
5000000;
    while (
M)
    {
        
f(i);
    }
    
info("Done"); 
В 1С 16 секунд, в Аксапте 70 секунд. В обоих случаях код выполняется на клиенте. Машина в обоих случаях ничем не загружена. Для примера в питоне то же самое заняло 4.78 секунды.
Конструкция for() в Аксапте увеличила время еще на 6 секунд.

Таким образом локальные вычисления в DAX происходят в 4.4 раза медленнее

1C 7.7 + компонента 1С++
DAX 4.0

Какие есть мнения?
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286)
Old 19.09.2008, 14:08   #2  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by mit View Post
Какие есть мнения?
Маладец!

но обявление двух функций не эквивалентно объявлению одной функции с вложенной подфункцией.

вместо n+1 можно использовать ++n

для замера скорости лучше не пользоваться инфологом - это очень тяжелая структура.
для замера скорости лучше пользоваться таймером. Их предлгалалось несколько вариантов.
См. обсуждения на форуме.

А также были обсуждения какие конструкции яызка X++ являются самыми медленными в рамках X++.

И еще одно соображение.
Предполагаю, что вы сейчас замерили не скорость "локальных вычислений", а скорость "сборки мусора".
Скорость сборки мусора сильно зависит от используемой памяти.
Т.е. для данного теста помимо скорости нужно показывать используемую клиентом память
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 14:09   #3  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,300 / 239 (10) ++++++
Join Date: 09.11.2001
Location: Химки, Московская область
ИМХО. Ассемблер рулит. На нём наверняка будет быстрее.
__________________
Михаил Андреев
https://www.amand.ru
Old 19.09.2008, 14:11   #4  
lev is offline
lev
Ищущий знания...
lev's Avatar
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Join Date: 18.01.2005
Location: Москва
AX 3.0
X++:
static void AEliz_test(Args _args)
{
    int i = 5000000;
    int i1;
    int stratTime, endTime, runTime;
    ;

    stratTime   = timeNow();

    for(i1=1;i1<i;i1++)
    {
    }
    endTime     = timeNow();

    runTime     = endTime - stratTime;

    info(time2str(runTime, 1,1));
}
время выполнения 00:00:09
выполнялось на клиенте.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Old 19.09.2008, 14:16   #5  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by mit View Post
Что-то пришла мне в голову мысль сравнить скорость работы Аксапты и 1С. Написал простой тест:
И еще одно соображение:

сравнивать надо на задачах, для которых эти системы предназначены.
Я правильно понимаю, что вы считаете, что Аксапта с 1Сом предназначены для целочисленных вычислений?
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 14:17   #6  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by Михаил Андреев View Post
ИМХО. Ассемблер рулит. На нём наверняка будет быстрее.
Точно!
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 14:19   #7  
crazysolntse is offline
crazysolntse
Участник
crazysolntse's Avatar
 
21 / 11 (1) +
Join Date: 24.07.2006
Location: Москва
Quote:
Originally Posted by lev View Post
AX 3.0
X++:
static void AEliz_test(Args _args)
{
    int i = 5000000;
    int i1;
    int stratTime, endTime, runTime;
    ;

    stratTime   = timeNow();

    for(i1=1;i1<i;i1++)
    {
    }
    endTime     = timeNow();

    runTime     = endTime - stratTime;

    info(time2str(runTime, 1,1));
}
время выполнения 00:00:09
выполнялось на клиенте.
ну машины то у всех разные
Old 19.09.2008, 14:21   #8  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by crazysolntse View Post
ну машины то у всех разные
Началось...

Но этот код более правильный с методической точки зрения.
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 14:30   #9  
Poleax is offline
Poleax
Модератор
Poleax's Avatar
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Join Date: 17.02.2005
Location: msk
Blog Entries: 34
хм....
X++:
static void AEliz_test(Args _args)
{
    int i = 5000000;
    int i1;
    int stratTime, endTime, runTime;
    ;

    stratTime   = timeNow();

    for(i1=1;i1<i;i1++)
    {
    }
    endTime     = timeNow();

    runTime     = endTime - stratTime;

    info(time2str(runTime, 1,1));
}
этот код на Ax 3.0 SP6 = 8 сек
на DAX 4.0 SP2 = 17 сек
Old 19.09.2008, 14:39   #10  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Join Date: 29.04.2008
Location: Москва
Quote:
Originally Posted by mazzy View Post
Я правильно понимаю, что вы считаете, что Аксапта с 1Сом предназначены для целочисленных вычислений?
Это не целочисленные вычисления. Это просто вызовы локальных функций. Для примера, выполнить функцию расчета стоимости для 1000 строк документа.

По поводу методически более правильного решения.
PHP Code:
т1 _GetPerformanceCounter();
    
Для й 0 По 5000000 Цикл
    
    КонецЦикла
;
    
т2 _GetPerformanceCounter();
    
Сообщить(т2 т1); 
1С: 7.518 секунд.

PHP Code:
int i 5000000;
    
int i1;
    
int stratTimeendTimerunTime;
    ;

    
stratTime   timeNow();

    for(
i1=1;i1<i;i1++)
    {
    }
    
endTime     timeNow();

    
runTime     endTime stratTime;

    
info(time2str(runTime1,1)); 
28 секунд.

Не знаю, что в понимании MS называется компиляцией, но даже транслятор выполняется быстрее.
Old 19.09.2008, 14:51   #11  
lev is offline
lev
Ищущий знания...
lev's Avatar
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Join Date: 18.01.2005
Location: Москва
с while выполнилось быстрее на одну секунду, т.е. выполнение заняло 8 секунд.
X++:
static void AEliz_test(Args _args)
{
    int i = 5000000;
    int i1;
    int stratTime, endTime, runTime;
    ;

    stratTime   = timeNow();

    while(i1<i)
    {
        i1++;
    }
    endTime     = timeNow();

    runTime     = endTime - stratTime;

    info(time2str(runTime, 1,1));
}
что то мне напомнило как во время внедрения у нас бухгалтерия говорила: "А вот в 1С...."
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Old 19.09.2008, 14:59   #12  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by RumataEstor View Post
Не знаю, что в понимании MS называется компиляцией, но даже транслятор выполняется быстрее.
Ура! Пустые циклы 1С гоняет быстрее.

Quote:
Originally Posted by RumataEstor View Post
Это не целочисленные вычисления. Это просто вызовы локальных функций. Для примера, выполнить функцию расчета стоимости для 1000 строк документа.
Угу. Именно так.
В расчете стоимости время на огранизацию цикла - наверняка самая существенная часть.
Именно поэтому вы начали с циклов
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 15:01   #13  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by lev View Post
с while выполнилось
Эх, не могу найти. Но была очень хорошая ветка, где обсуждались медленные и быстрые конструкции в X++.

Выявить медленные/быстрые конструкции и сравнить их в разных сервис-паках в пределах одного языка было бы полезно.
__________________
полезное на axForum, github, vk, coub.
Old 19.09.2008, 15:06   #14  
Poleax is offline
Poleax
Модератор
Poleax's Avatar
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Join Date: 17.02.2005
Location: msk
Blog Entries: 34
:) SQL Server 2005 SP2
Мне почему интересно стало про SQL Server 2005 SP2
PHP Code:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE 
FUNCTION time2( @n int)
RETURNS int
AS
BEGIN
    
    
RETURN @n+1;

END
GO 
и сам код
PHP Code:
declare @startTime  datetime;
declare @
endTime  datetime;
declare @
i int;
declare @
m int;

set @m=5000000
set 
@i=1

set 
@startTime getdate(); 
while (@
i<@m)
begin
    set 
@i=dbo.time2(@i)
end

set 
@endTime getdate();
select convert(varchar, @endTime - @startTime114) as RunTimeconvert(varchar, @startTime114) as StartTimeconvert(varchar, @endTime114) as EndTime, @as I
PHP Code:
RunTime                    StartTime                      EndTime                       I
----------------------- ------------------------------ -----------------------      -----------
00:01:40:783              15:00:59:840                 15:02:40:623                 5000000 
Время как видите 1 мин 40 сек

У кого Delphi или Visual Studio есть?

Last edited by Poleax; 19.09.2008 at 15:53.
Old 19.09.2008, 15:11   #15  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Join Date: 29.04.2008
Location: Москва
Quote:
Originally Posted by mazzy View Post
Ура! Пустые циклы 1С гоняет быстрее.
Не надо передергивать! Пустой цикл - это операции по переходу от одной строки кода к другой. Если видны тормоза в простых переходах к следующей операции, то они неизбежны при выполнении реальных действий.
Old 19.09.2008, 15:30   #16  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Join Date: 29.04.2008
Location: Москва
Quote:
Originally Posted by Poleax View Post
SQL: Время как видите 1 мин 40 сек
У меня потратилось 00:02:30:093 - 2 с половиной минуты. Но SQL-то уж точно не для расчетов.

А вот это:
PHP Code:
-module(count).
-
compile(export_all).

start() ->
    
statistics(wall_clock),
    
count(05000000),
    {
_T} = statistics(wall_clock),
    
io:format("~w~n", [T]).

count(MM) ->
    
ok;
count(IM) ->
    
count(f(I), M).

f(I) ->
    
1. 
выполняется за 0.515 секунд.
Old 19.09.2008, 15:40   #17  
Poleax is offline
Poleax
Модератор
Poleax's Avatar
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Join Date: 17.02.2005
Location: msk
Blog Entries: 34
Quote:
выполняется за 0.515 секунд.
Да уж... нет слов.

Так вот мне все таки интересно почему код static void AEliz_test(Args _args)
на Ax 3.0 SP6 = 8 сек, а на DAX 4.0 SP2 = 17 сек

У кого так же 3-ка и 4-ка по разному считают? или у меня что то с Аксаптой 4? Как на счет DAX 2009? Кому не лень проверить.. чистое любопытство.

Last edited by Poleax; 19.09.2008 at 15:48. Reason: DAX 2009
This post has been rated by: mazzy (5).
Old 19.09.2008, 15:43   #18  
lev is offline
lev
Ищущий знания...
lev's Avatar
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Join Date: 18.01.2005
Location: Москва
Quote:
Originally Posted by Poleax View Post
У кого так же 3-ка и 4-ка по разному считают? или у меня что то с Аксаптой 4?
У меня 4-ки нет под рукой, не могу протестить, а очень хочется
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Old 19.09.2008, 15:49   #19  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,300 / 239 (10) ++++++
Join Date: 09.11.2001
Location: Химки, Московская область
Задачу для тестирования нашли какую-то мелкую
Вот такое
Обнаружены 45-е и 46-е числа Мерсенна


решить слабО ?
__________________
Михаил Андреев
https://www.amand.ru
Old 19.09.2008, 15:56   #20  
Poleax is offline
Poleax
Модератор
Poleax's Avatar
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Join Date: 17.02.2005
Location: msk
Blog Entries: 34
Михаил Андреев
предлагаешь заработать $100 тыс.
Сразу скажу SQL Server 2005 не подойдет
Tags
1c, производительность, сравнение систем, ax3.0, ax4.0

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Regulatory Reporting Setup for Microsoft Dynamics AX (Russia) (DAX 40/ DAX 2009) Poleax Microsoft и системы Microsoft Dynamics 0 07.04.2009 15:38
Программирование в DAX 3-4-5 otkudao Рынок труда Microsoft Dynamics 4 17.11.2008 10:42
Позиционирование DAX и NAV slava09 Microsoft и системы Microsoft Dynamics 27 21.08.2008 16:41
1C:Бухгалтерия локализована во Вьетнаме :-) Сисой Другие системы на рынке 0 31.01.2007 15:10
опять 1C: чисто технические аспекты... ushastik Сравнение ERP-систем 45 30.01.2004 13:04
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 03:18.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.