AXForum  
Вернуться   AXForum > Рынок > Сравнение ERP-систем
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.09.2008, 13:57   #1  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
DAX vs 1C
Что-то пришла мне в голову мысль сравнить скорость работы Аксапты и 1С. Написал простой тест:
PHP код:
//*******************************************
Функция Д(н)
     
Возврат н 1;
КонецФункции
//*******************************************
Процедура Сформировать()
     
М 5000000;
     
й 0;
     
Пока й М Цикл
          й 
Д(й);
     
КонецЦикла;
КонецПроцедуры 
В Аксапте:
PHP код:
    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)
Старый 19.09.2008, 14:08   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mit Посмотреть сообщение
Какие есть мнения?
Маладец!

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

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

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

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

И еще одно соображение.
Предполагаю, что вы сейчас замерили не скорость "локальных вычислений", а скорость "сборки мусора".
Скорость сборки мусора сильно зависит от используемой памяти.
Т.е. для данного теста помимо скорости нужно показывать используемую клиентом память
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 14:09   #3  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
ИМХО. Ассемблер рулит. На нём наверняка будет быстрее.
__________________
Михаил Андреев
https://www.amand.ru
Старый 19.09.2008, 14:11   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
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
выполнялось на клиенте.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 19.09.2008, 14:16   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mit Посмотреть сообщение
Что-то пришла мне в голову мысль сравнить скорость работы Аксапты и 1С. Написал простой тест:
И еще одно соображение:

сравнивать надо на задачах, для которых эти системы предназначены.
Я правильно понимаю, что вы считаете, что Аксапта с 1Сом предназначены для целочисленных вычислений?
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 14:17   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
ИМХО. Ассемблер рулит. На нём наверняка будет быстрее.
Точно!
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 14:19   #7  
crazysolntse is offline
crazysolntse
Участник
Аватар для crazysolntse
 
21 / 11 (1) +
Регистрация: 24.07.2006
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
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
выполнялось на клиенте.
ну машины то у всех разные
Старый 19.09.2008, 14:21   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от crazysolntse Посмотреть сообщение
ну машины то у всех разные
Началось...

Но этот код более правильный с методической точки зрения.
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 14:30   #9  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 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 сек
Старый 19.09.2008, 14:39   #10  
RumataEstor is offline
RumataEstor
очами вижу
 
84 / 19 (1) ++
Регистрация: 29.04.2008
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я правильно понимаю, что вы считаете, что Аксапта с 1Сом предназначены для целочисленных вычислений?
Это не целочисленные вычисления. Это просто вызовы локальных функций. Для примера, выполнить функцию расчета стоимости для 1000 строк документа.

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

PHP код:
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 называется компиляцией, но даже транслятор выполняется быстрее.
Старый 19.09.2008, 14:51   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
с 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С...."
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 19.09.2008, 14:59   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от RumataEstor Посмотреть сообщение
Не знаю, что в понимании MS называется компиляцией, но даже транслятор выполняется быстрее.
Ура! Пустые циклы 1С гоняет быстрее.

Цитата:
Сообщение от RumataEstor Посмотреть сообщение
Это не целочисленные вычисления. Это просто вызовы локальных функций. Для примера, выполнить функцию расчета стоимости для 1000 строк документа.
Угу. Именно так.
В расчете стоимости время на огранизацию цикла - наверняка самая существенная часть.
Именно поэтому вы начали с циклов
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 15:01   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от lev Посмотреть сообщение
с while выполнилось
Эх, не могу найти. Но была очень хорошая ветка, где обсуждались медленные и быстрые конструкции в X++.

Выявить медленные/быстрые конструкции и сравнить их в разных сервис-паках в пределах одного языка было бы полезно.
__________________
полезное на axForum, github, vk, coub.
Старый 19.09.2008, 15:06   #14  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
:) SQL Server 2005 SP2
Мне почему интересно стало про SQL Server 2005 SP2
PHP код:
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 код:
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 код:
RunTime                    StartTime                      EndTime                       I
----------------------- ------------------------------ -----------------------      -----------
00:01:40:783              15:00:59:840                 15:02:40:623                 5000000 
Время как видите 1 мин 40 сек

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

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

А вот это:
PHP код:
-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 секунд.
Старый 19.09.2008, 15:40   #17  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
выполняется за 0.515 секунд.
Да уж... нет слов.

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

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

Последний раз редактировалось Poleax; 19.09.2008 в 15:48. Причина: DAX 2009
За это сообщение автора поблагодарили: mazzy (5).
Старый 19.09.2008, 15:43   #18  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Poleax Посмотреть сообщение
У кого так же 3-ка и 4-ка по разному считают? или у меня что то с Аксаптой 4?
У меня 4-ки нет под рукой, не могу протестить, а очень хочется
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 19.09.2008, 15:49   #19  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Задачу для тестирования нашли какую-то мелкую
Вот такое
Обнаружены 45-е и 46-е числа Мерсенна


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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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

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

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

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