19.09.2008, 16:06 | #21 |
Участник
|
Цитата:
я не просил оценить грамотность написания кода. код написан идентично для двух систем. надеюсь это ни у кого здесь не вызывает сомнений. Цитата:
вместо n+1 можно использовать ++n
Цитата:
для замера скорости лучше не пользоваться инфологом - это очень тяжелая
структура. Цитата:
для замера скорости лучше пользоваться таймером. Их предлгалалось несколько вариантов.
См. обсуждения на форуме. Цитата:
А также были обсуждения какие конструкции яызка X++ являются самыми медленными в рамках X++.
И еще одно соображение. Предполагаю, что вы сейчас замерили не скорость "локальных вычислений", а скорость "сборки мусора". Скорость сборки мусора сильно зависит от используемой памяти. Т.е. для данного теста помимо скорости нужно показывать используемую клиентом память понятно что для жизни вне лаборатории ситуация встретится навряд ли(сложно представить кусок кода длинной в пять милл. строк) разве что... да нет, навряд ли.
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
19.09.2008, 18:27 | #22 |
Участник
|
Цитата:
Сравнивать имеет смысл решения конкретных задач, для которых системы предназначены. А так, извините, это просто глупость. Цитата:
я не просил оценить грамотность написания кода. код написан идентично для двух систем. надеюсь это ни у кого здесь не вызывает сомнений.
Цитата:
понятно что для жизни вне лаборатории ситуация встретится навряд ли(сложно представить кусок кода длинной в пять милл. строк) разве что... да нет, навряд ли.
"Хрр!" - сказала японская пила. "Ага!" - сказали суровые сибирские мужики. |
|
19.09.2008, 18:40 | #23 |
Участник
|
ИМХО польза таки есть - данный тест показывает "размер" накладных расходов при частом вызове методов, что очень часто имеет место быть в Аксапте.
Т.е. пропагандируемые методы разбиения одного большого метода на кучку маленьких ведут к потере производительности. |
|
19.09.2008, 22:47 | #24 |
Участник
|
Цитата:
Читайте еще раз DAX vs 1C Цитата:
DAX vs 1C Без него 7 секунд. Добавил до таймера info - получил 8 секунд. Получается, что вызов инфолога добавиляет около 10-15%. Цитата:
Сообщение от mit
ну еще раз обращу внимание что задача не стояла получить супер результат на этом куске кода (для супер результата - тупо бы взяли супер компьютер ). задача была сравнить две системы. причем на довольно узком участке - а именно - локальные вычисления. я подозреваю что тут все упрется даже не в вычисления, а в скорости перехода интерпретатора по коду со строки на строку.
Цитата:
создаете пять-десять новых номенклатур. настраиваете их примерно одинаково. методика списания себестоимости ФИФО или средняя или другая на выбор. создаете сотню приходов для каждой номенклатуры в обоих системах (замеряете время, используемую память) создаете сотню расходов для каждой номенклатуры в обоих системах (замеряете время, используемую память) после этого задним числом добавляете накладные расходы в обоих системах. после этого рассчитываете себестоимость для новых номенклатур на одном компе или распраллеливаете алгоритм расчета на пару-тройку компьютеров (замеряете время, используемую память) получаете очень хороший синтетический тест. для полной картины надо бы добавить фоновые процессы разноски/проведения приходов/расходов других номенклатур для всех замеряемых этапов. Но ведь тут выяснится, что накладной расход в 7ке на уже существующие приходы не начисляется, нужно перепроводить. Тут выяснится, что в 7ке нужно перепроводить все документы и прочая отсутствующая фигня типа невозможности распарралелить расчет себестоимости... К тому же неожиданно всплывет ваш упомянутый 1С++ и выяснится, что у вас полностью переписанная конфигурация, с которой надо разбираться и разбираться. Вот и остается замерять скорость прогона пустых циклов Цитата:
Согласен, что много мелких - плохо. Слишком большие методы тоже плохо. |
|
19.09.2008, 22:51 | #25 |
Участник
|
Цитата:
Сообщение от mazzy
вот ведь неймется. У меня добавляет секунду к коду от Lev
DAX vs 1C Без него 7 секунд. Добавил до таймера info - получил 8 секунд. Получается, что добавилось около 10-15%. выполнилось за 5 секунд с инфологом и без инфолога |
|
19.09.2008, 22:54 | #26 |
Участник
|
Цитата:
Получил 4.681 |
|
19.09.2008, 22:57 | #27 |
Участник
|
Цитата:
У меня на Ax 3.0 SP6 как и в ax2009 - без инфолога и с инфологом - 5 секунд. Интересно... |
|
19.09.2008, 23:39 | #28 |
Участник
|
кстати, протестировал вариант с вложенным методом
X++: static void AEliz_test(Args _args) { int i = 5000000; int i1; int stratTime, endTime, runTime; int test(int n) { return n+1; } ; stratTime = timeNow(); for(i1=1;i1<i;i1++) { test(i1); } endTime = timeNow(); runTime = endTime - stratTime; info(time2str(runTime, 1,1)); } ax4.0 sp2 - 41 сек. ax2009 - 14 сек. изменил for-цикл на while-цикл, оставил вложенный метод, получил ax3.0 sp6 - 19 сек. ax4.0 sp2 - 38 сек. ax2009 - 13 сек. Прикольно. mit, вы похоже пробуете на ax4, так? Спасибо, что натолкнули Poleax на интересную мысль. Poleax, спасибо за неожиданный, но очень конструктивный разворот темы. Надо подумать. |
|
20.09.2008, 01:42 | #29 |
очами вижу
|
Самое первое сообщение в теме:
Цитата:
Об этом может говорить продавец, которому важно продать функционал, а не оптимизированную систему. Естесственно, решение об используемой платформе не может приниматься только на основании производительности. Иначе, все бы писали собственные ERP системы на С++. Я предполагаю, что стандартный функционал Аксапты перекрывает функционал каждой существующей для 1С конфигурации. Именно поэтому Аксапта выглядит предпочтительней 1С. Цитата:
В свете информации о DAX2009 и возможном переводе всей системы на .NET Аксапта выиграет по производительности. Однако такой версии для сравнения я пока не имею. |
|
20.09.2008, 07:16 | #30 |
Участник
|
Ура, 1С сделала систему, которая гоняет циклы за время, сопоставимое с Аксаптой.
Искренне поздравляю. Копайте дальше. "Скорость работы" - это не только целочисленные циклы. Может еще что интересное нароете. Эх, кто-нибудь бы время расчета себестоимости бы сравнил... |
|
20.09.2008, 07:43 | #31 |
Moderator
|
По моему опыту, скорость работы транзакционного приложения (каковым и Аксапта, безусловно, является) на 80-85% определяется ожиданием завершения операции базой данных. Поэтому трехкратный (например) прирост скорости интерпретации кода X++ даст всего-лишь 5-7% выигрыша в производительности. Вот собственно и вопрос - стоит ли вкладывать время и деньги в оптимизацию интерпретатора (кстати с шансами поломать совместимость), если при замене СУБД на более современную (скажем - SQL 2005 на SQL 2008 или Oracle 10 на Oracle 11), можно на том же железе добиться более существенного выигрыша в производительности ? А если очень хочется из Аксапты какие-то сложные вычислительные задачи порешать, так по моему проще написать DLL-ку на C++. Кстати и готовую (и бесплатную) матбиблиотеку или просто отдельную функцию для C++ найти гораздо проще.
Последний раз редактировалось fed; 20.09.2008 в 10:37. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (3). |
20.09.2008, 08:27 | #32 |
очами вижу
|
Цитата:
Приведенный тест показывает время работы примитива "вызов функции" и примитива "цикл". Понятие "пустой цикл" для программиста не существует. Машина в любом случае нагружает процессор. Вопрос в том, насколько оптимально. Начинка цикла нисколько не уменьшит времени его выполнения. Кстати, целочисленная арифметика, про которую вы говорили (i + 1) - это то, из чего строится работа процессора. И складывать числа любой язык программирования должен примерно одинаково (хотя в языках с динамической типизацией, например 1С, время уйдет еще на проверку типа). Вместо того, чтобы критиковать тест, может лучше сравнить время работы массивов и хэш-таблиц? Это тоже примитивы, с которыми работает программист. И от того, насколько оптимально они реализованы, зависит и общее быстродействие приложения. |
|
20.09.2008, 08:36 | #33 |
Участник
|
Цитата:
Цитата:
Это что-то новое. И раньше 1Совцы всячески уходили от сравнения функционала, но хоть говорили о производительности "платформы" в целом. Теперь вот до примитивов скатились. Если вы настаиваете на гордом звании Программист, то чего ж смешиваете "скорость работы системы" и "скорость работы примитивов"? Цитата:
Скорость работы транзакционного приложения зависит не только от скорости работы процессора. Цитата:
Массивы и хеш-таблицы - структуры, которые работают на клиенте. Еще раз перечитайте сообщения fed - "скорость работы транзакционного приложения"... |
|
20.09.2008, 08:50 | #34 |
очами вижу
|
Цитата:
Цитата:
Ну это не вы говорите. Давайте лучше сравним время расчета себестоимости. Возьмем функцию из Аксапты, портируем ее на 1С и замерим время. |
|
20.09.2008, 13:26 | #35 |
Участник
|
Аксапте не "позиционируется как компилятор" в машкод.
Вы знаете как была устроена ява когда не было хотспота? |
|
20.09.2008, 14:16 | #36 |
Участник
|
Цитата:
В принципе, не очень понятно, зачем тестировать примитивы, так как непонятно на какое решение будут влиять результаты такого рода тестов. Вы же не будете выбирать КИС по времени работы пустого цикла? Или даже по времени работы "портированной себестоимости" - вам нужно знать сколько у вас будет происходить закрытие склада - в 1се одинесовское в аксапте аксаптовское или, например, сколько ользователей одновременнно могут вводит заказы с заданной скоростью. А еще такая есть вещь как масштабируемость. Даже если вы программист, вы не пользуетесь примитивами. Как правило ваша работа базируется на существующей бизнеслогике. Может быть стоит проводить какие-то исследования для определения теоретического предела оптимизации, но тогда надо проводить неки тести, которые будут отражать все аспекты программирования, от субд до лекгой интерграции сторонниз компонентов. Например, из Фч можно вызвать как DLL так и .NET код скомпилированный в машинный. |
|
20.09.2008, 17:54 | #37 |
Пенсионер
|
Есть предложение, давай те проверим сколько времени данный код твыполняется в SAP и тут же сделаем вывод что скорость работы 1С выше чем в SAP!
Сравнивать надо сопоставимые вещи! Давайте не будем ездить в булочную на БелАЗе!
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
20.09.2008, 21:47 | #38 |
очами вижу
|
Цитата:
Сообщение от belugin
Или даже по времени работы "портированной себестоимости" - вам нужно знать сколько у вас будет происходить закрытие склада - в 1се одинесовское в аксапте аксаптовское или, например, сколько ользователей одновременнно могут вводит заказы с заданной скоростью. А еще такая есть вещь как масштабируемость.
Я хочу определить, на какой платформе идентичный код будет выполняться быстрее. Не с целью опустить какую-то систему. А с целью определения, какими механизмами лучше не пользоваться в какой-то системе. Цитата:
Еще раз повторю. Перевод Аксапты на .NET должен увеличить быстродействие системы в таких задачах на как минимум 2 порядка. Аналогичный код на C# выполняется за долю секунды. Именно такое время я ожидал от "компилятора" Аксапты. |
|
22.09.2008, 13:40 | #39 |
MCTS
|
Не так давно на одном из проектов внедрения Аксапто 3.0, в связи с жалобами пользователей на быстродействие Аксапты, спецами клиента был произведен ряд тестов быстродействия Аксапты и 1C. Один из тестов заключался в простом формировании проводок в ГК (в DAX - это была разноска журналов ГК).
Так вот в результате проведенных тестов была выявлена одна интересная деталь. Для одного пользователя, формирующего проводки, производительность 1С действительно была лучше где-то в 3-4 раза. Однако с увеличением числа конкурентных пользователей производительность 1С очень быстро падала, в то время, как производительность Аксапты практически не изменялась. И при достижении где-то 10 конкурентных пользователей уже Аксапта выигрывала у 1С в производительности где-то в 3-4 раза. Так что, замеры производительности системы при выполнении ей пустых циклов действительно не несут никакого смысла. |
|
22.09.2008, 13:47 | #40 |
Участник
|
тыгыгдын тыгыгдын тыгыгдын (поскакал конь тыгыгдынский).
в общем то не пытался чернить аксапту, или выгораживать 1с. хотел просто поделиться с общественностью наблюдением. думаю что это сравнение не даёт плюсов 1с, так как указанные операции в природе редко встречаются, а задачи быстродействием будут упираться совсем в другие вещи (напрмер в скорость выборки из БД), по сему общее быстродействие у ах будет думаю выше. так же нужно иметь ввиду историю. win95 тоже было нечто новым, но достаточно тормозным. так происходит всегда при переходе к новым технологиям, координально меняющим привычный уклад. в четверке было переписано очень очень многое, причем интерфейс старались оставить прежним. судя по переносу сроков все шло очень не гладко. надеюсь что следующие версии будут более производительными. Цитата:
Цитата:
Сравнивать имеет смысл решения конкретных задач, для которых системы предназначены. А так, извините, это просто глупость.
Цитата:
У меня вызывает. Компиляторы, штука сложная. Порой, для ускорения одних задач приходится жертвовать производительностью других. И что там сделали авторы обоих компиляторов, совершенно неважно. Важно, насколько они справляются с теми задачами, для которых они предназначены.Вспомнилось. На одном внедрении была задача оптимизации. После упрощения (точнее, дискретизации) её можно было привести к стандартной задаче, реализуемой обычными пакетами типа матлаб и т.п. Ан нет, решили в Аксапте. Потом месяц оптимизировали, так как суток для расчёта не хватало...
"Хрр!" - сказала японская пила. "Ага!" - сказали суровые сибирские мужики. 2All не принимайте близко результаты. повторюсь это не показатель работы систем, это лишь наблюдение. думаю что при написании кода его можно учесть и тем самым избежать излишних накладных расходов. в любом случае, если это поможет хоть кому нибудь то это уже хорошо.
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
Теги |
1c, производительность, сравнение систем, ax3.0, ax4.0 |
|
|