|
![]() |
#1 |
Участник
|
DAX vs 1C
Что-то пришла мне в голову мысль сравнить скорость работы Аксапты и 1С. Написал простой тест:
PHP код:
PHP код:
Конструкция for() в Аксапте увеличила время еще на 6 секунд. Таким образом локальные вычисления в DAX происходят в 4.4 раза медленнее 1C 7.7 + компонента 1С++ DAX 4.0 Какие есть мнения?
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
![]() |
#2 |
Участник
|
Маладец!
но обявление двух функций не эквивалентно объявлению одной функции с вложенной подфункцией. вместо n+1 можно использовать ++n для замера скорости лучше не пользоваться инфологом ![]() для замера скорости лучше пользоваться таймером. Их предлгалалось несколько вариантов. См. обсуждения на форуме. А также были обсуждения какие конструкции яызка X++ являются самыми медленными в рамках X++. И еще одно соображение. Предполагаю, что вы сейчас замерили не скорость "локальных вычислений", а скорость "сборки мусора". Скорость сборки мусора сильно зависит от используемой памяти. Т.е. для данного теста помимо скорости нужно показывать используемую клиентом память ![]() |
|
![]() |
#3 |
Участник
|
ИМХО. Ассемблер рулит. На нём наверняка будет быстрее.
|
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
Цитата:
я не просил оценить грамотность написания кода. код написан идентично для двух систем. надеюсь это ни у кого здесь не вызывает сомнений. Цитата:
вместо n+1 можно использовать ++n
Цитата:
для замера скорости лучше не пользоваться инфологом
![]() структура. ![]() Цитата:
для замера скорости лучше пользоваться таймером. Их предлгалалось несколько вариантов.
См. обсуждения на форуме. Цитата:
А также были обсуждения какие конструкции яызка X++ являются самыми медленными в рамках X++.
И еще одно соображение. Предполагаю, что вы сейчас замерили не скорость "локальных вычислений", а скорость "сборки мусора". Скорость сборки мусора сильно зависит от используемой памяти. Т.е. для данного теста помимо скорости нужно показывать используемую клиентом память ![]() ![]() понятно что для жизни вне лаборатории ситуация встретится навряд ли(сложно представить кусок кода длинной в пять милл. строк) разве что... да нет, навряд ли.
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
![]() |
#6 |
Участник
|
Цитата:
Сравнивать имеет смысл решения конкретных задач, для которых системы предназначены. А так, извините, это просто глупость. Цитата:
я не просил оценить грамотность написания кода. код написан идентично для двух систем. надеюсь это ни у кого здесь не вызывает сомнений.
Цитата:
понятно что для жизни вне лаборатории ситуация встретится навряд ли(сложно представить кусок кода длинной в пять милл. строк) разве что... да нет, навряд ли.
"Хрр!" - сказала японская пила. "Ага!" - сказали суровые сибирские мужики. |
|
![]() |
#7 |
Участник
|
ИМХО польза таки есть - данный тест показывает "размер" накладных расходов при частом вызове методов, что очень часто имеет место быть в Аксапте.
Т.е. пропагандируемые методы разбиения одного большого метода на кучку маленьких ведут к потере производительности. |
|
![]() |
#8 |
Участник
|
Цитата:
Читайте еще раз DAX vs 1C Цитата:
DAX vs 1C Без него 7 секунд. Добавил до таймера info - получил 8 секунд. Получается, что вызов инфолога добавиляет около 10-15%. Цитата:
Сообщение от mit
![]() ну еще раз обращу внимание что задача не стояла получить супер результат на этом куске кода (для супер результата - тупо бы взяли супер компьютер
![]() ![]() Цитата:
создаете пять-десять новых номенклатур. настраиваете их примерно одинаково. методика списания себестоимости ФИФО или средняя или другая на выбор. создаете сотню приходов для каждой номенклатуры в обоих системах (замеряете время, используемую память) создаете сотню расходов для каждой номенклатуры в обоих системах (замеряете время, используемую память) после этого задним числом добавляете накладные расходы в обоих системах. после этого рассчитываете себестоимость для новых номенклатур на одном компе или распраллеливаете алгоритм расчета на пару-тройку компьютеров (замеряете время, используемую память) получаете очень хороший синтетический тест. для полной картины надо бы добавить фоновые процессы разноски/проведения приходов/расходов других номенклатур для всех замеряемых этапов. ![]() Но ведь тут выяснится, что накладной расход в 7ке на уже существующие приходы не начисляется, нужно перепроводить. Тут выяснится, что в 7ке нужно перепроводить все документы и прочая отсутствующая фигня типа невозможности распарралелить расчет себестоимости... К тому же неожиданно всплывет ваш упомянутый 1С++ и выяснится, что у вас полностью переписанная конфигурация, с которой надо разбираться и разбираться. Вот и остается замерять скорость прогона пустых циклов ![]() Цитата:
![]() Согласен, что много мелких - плохо. Слишком большие методы тоже плохо. |
|
![]() |
#9 |
Участник
|
тыгыгдын тыгыгдын тыгыгдын (поскакал конь тыгыгдынский).
в общем то не пытался чернить аксапту, или выгораживать 1с. хотел просто поделиться с общественностью наблюдением. думаю что это сравнение не даёт плюсов 1с, так как указанные операции в природе редко встречаются, а задачи быстродействием будут упираться совсем в другие вещи (напрмер в скорость выборки из БД), по сему общее быстродействие у ах будет думаю выше. так же нужно иметь ввиду историю. win95 тоже было нечто новым, но достаточно тормозным. так происходит всегда при переходе к новым технологиям, координально меняющим привычный уклад. в четверке было переписано очень очень многое, причем интерфейс старались оставить прежним. судя по переносу сроков все шло очень не гладко. надеюсь что следующие версии будут более производительными. Цитата:
Цитата:
Сравнивать имеет смысл решения конкретных задач, для которых системы предназначены. А так, извините, это просто глупость.
Цитата:
У меня вызывает. Компиляторы, штука сложная. Порой, для ускорения одних задач приходится жертвовать производительностью других. И что там сделали авторы обоих компиляторов, совершенно неважно. Важно, насколько они справляются с теми задачами, для которых они предназначены.Вспомнилось. На одном внедрении была задача оптимизации. После упрощения (точнее, дискретизации) её можно было привести к стандартной задаче, реализуемой обычными пакетами типа матлаб и т.п. Ан нет, решили в Аксапте. Потом месяц оптимизировали, так как суток для расчёта не хватало...
"Хрр!" - сказала японская пила. "Ага!" - сказали суровые сибирские мужики. 2All не принимайте близко результаты. повторюсь это не показатель работы систем, это лишь наблюдение. думаю что при написании кода его можно учесть и тем самым избежать излишних накладных расходов. в любом случае, если это поможет хоть кому нибудь то это уже хорошо.
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
![]() |
#10 |
Участник
|
Цитата:
Цитата:
![]() Цитата:
контейнер: '+=' vs 'conins' небольшое исследование Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Элементы функционального программирования в Axapta Свой progressBar |
|
![]() |
#11 |
Ищущий знания...
|
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)); } выполнялось на клиенте.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от 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)); } выполнялось на клиенте. |
|
![]() |
#13 |
Участник
|
Началось...
Но этот код более правильный с методической точки зрения. |
|
![]() |
#14 |
Участник
|
Цитата:
сравнивать надо на задачах, для которых эти системы предназначены. Я правильно понимаю, что вы считаете, что Аксапта с 1Сом предназначены для целочисленных вычислений? |
|
![]() |
#15 |
очами вижу
|
Цитата:
По поводу методически более правильного решения. PHP код:
PHP код:
Не знаю, что в понимании MS называется компиляцией, но даже транслятор выполняется быстрее. |
|
![]() |
#16 |
Участник
|
Цитата:
![]() Цитата:
В расчете стоимости время на огранизацию цикла - наверняка самая существенная часть. Именно поэтому вы начали с циклов ![]() |
|
![]() |
#17 |
очами вижу
|
|
|
![]() |
#18 |
Участник
|
Цитата:
Получил 4.681 |
|
![]() |
#19 |
Модератор
|
хм....
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)); } на DAX 4.0 SP2 = 17 сек |
|
![]() |
#20 |
Ищущий знания...
|
с 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)); } ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
Теги |
1c, производительность, сравнение систем, ax3.0, ax4.0 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|