Форум » Для флейма » Интерпретаторы » Ответить

Интерпретаторы

Pasha: Возьмем 3 продукта: 1с 8, visual foxpro и harbour. Назначение у них различное, коня и трепетную лань сравнивать не стоит, но есть и кое-что общее: все они имеют интерпретатор, построенный на похожем принципе: сначала делается предкомпиляция в некий промежуточный код, а затем этот код выполняется. Поэтому возникла мысль сравнить производительность этих интерпретаторов, посмотреть, так сказать, чей движок мощнее. Берем простенький тест: func main Local i, nLoops := 5000000 Local L_F := 112345.67 Local L_N := 10000 Local L_C := "0123456789ABCDEF" Local nn, nf, cc Local nn1 := 0 Local nf1 := 0.1 Local cc1 := "" Local nn2, nf2 Local nSec := Seconds() for i := 1 to nLoops nn := L_N nf := L_F cc := L_C nn := L_N + 1 nf := L_F + 1.0 cc := L_C + L_C nn1 += L_N + 1 nf1 += L_F + 1.0 if (nn1 % 2) == 0 // cc1 += L_C + chr(nn1 % 256) endif if (len(cc1) % 3) == 0 nn2 := nn1 % 13 nf2 := nf1 % 13 endif nn := (nn1 + L_N + 1)*100/15 nf := (nf1 + L_F + 1.0)*100.00/15.00 next ? Seconds() - nSec ? nn, nf, cc ? nn1, nf1, len(cc1) ? nn2, nf2 retu nil И запускаем его, с учетом различия в синтаксисе языков, конечно. Компьютер: Celeron 2.5 GHZ, 1GB RAM Закомментаренный оператор - это конкатенация строк. Сразу скажу, что с конкатенацией не справился никто, кроме, естественно, харбора. Да и на его результате конкатенация сказалась незначительно: Время с конкатенацией 18.59 сек Время без конкатенации 16.86 сек foexpro показал вполне приличный результат - 48.08 сек, что всего лишь в три раза хуже харбора. Ну а что же хваленые канадские профессионалы 1с ? Ждать пришлось долго, 330 сек, что в 20(!) раз хуже харбора. Здесь даже не подходит аналогия сравнения двигателя Запорожца с двигателем Ламборджини, надо сравнивать с двигателем реактивного истребителя. Как говорится, за много-много лет ничто не мешало 1с обзавестись приличным движком, да вот как-то не сложилось. Ну а движок харбора порадовал, хорош. Можно было протестировать продукты и на других режимах, скажем, добавить тест ООП, но, думается, смысла в этом нет, класс уже понятен и без этого.

Ответов - 33, стр: 1 2 All

AlexMyr: Pasha пишет: Как говорится, за много-много лет ничто не мешало 1с обзавестись приличным движком, да вот как-то не сложилось. Но это им не мешает занимать почти всю долю рынка для бухгалтерии, и я думаю, что они сильно не переживают и не напрягаются как внутри все устроено, главное красивая картинка

Сыроежка: Pasha Мне представляется, что сравнение не совсем корректное. Для Harbour задача решалась в консольном режиме, а для 1С в графическом режиме. Причем для 1С вполне возможно имеется развитая встроенная система перехвата исключений, а в Harbour, если вы сами не используете BEGIN SEQUENSE система перехвата исключений отсутствует. А кроме того сразу же подключается режим отладки при возникновении ошибки. То есть код не идентичен в обоих случаях и не представляет собой то, что вы видите в листинге. Что касается замечания Pasha пишет: Как говорится, за много-много лет ничто не мешало 1с обзавестись приличным движком, да вот как-то не сложилось то оно также не совсем корректно. Тут главное, что этот язык есть. Много ли вы знаете фирм, разрабатывающих бухгалтерское программное обеспечение, у которых есть такой развитый язык? А мы видим, что в 1С их встроенный язык прошел большой путь эволюции, начиная с языка 1С 6.0 и до языка 1С 8.Х. У них в приоритете стояла задача охватить встроенным языком все многообразие бухгалтерских задач, сделать его гибким, позволяющим настраивать и модифицировать любую часть программного комплекса, и при этом чтобы от пользователей не требовалось больших знаний в программировании. И с этой задачей они справились. То есть, как говорится, хороша ложка к обеду, то есть хорош тот продукт, который решает поставленную задачу. Для срравнения, например, Java естественно уступает в скорости С++, но тем не менее Java превосходит С++ во многих областях применения, для которого он прредназначен. Так что я не вишу большого смысла в таком сравнении. Pasha , мне бы было интереснее сравнить ваш собственный язык, который вы разработали самостоятельно для своей бухгалтерской программы, с языком 1С. Вот здесь был бы предмет для сравнения.

Pasha: Возражения не принимаются. Графический режим никакой роли не играет, харбор в графическом режиме показал бы тот же результат. По поводу исключений - это только домыслы. Да и какие там исключения могут быть. Отладка есть и в харборе. Код не полностью идентичен, конечно, но представление о качестве движка дает. По поводу встроенного движка 1с - так 1с постарше харбора будет. Могли бы движок и довести за это время. Я уж не говорю о том, что 1с - продукт коммерческий, делается за деньги, и очень немаленькие, а харбор - свободная разработка, держится на инициативе. А насчет смысла сравнения я написал. Я сравнивал то общее, что есть в этих продуктах. А по поводу моего собственного языка - так этот язык и есть харбор. Настройка у меня делается через файлы hrb, которые выполняются hvm с той же производительностью, что и родной пи-код харбора. Это, собственно, он и есть. Так что я могу смело сказать, что мой собственный язык в 20 раз производительнее, чем язык 1с :)


Сыроежка: Pasha Я не знаю вашего языка для бухгалтерских программ. Вот когда вы его обнародуете, когда можно будет с его помощью работать со всякими справочниками, формами, запросами, тогда и будет предмет для разговора. Более того у 1С имеется связь между выполняемым языком и исходным кодом в случае возниконовения ошибки. То есть при возникновении ошибки происходит перехват исключительной ситуции, запускается режим отладки, и высвечивается исходная строка кода программы с детальным указанием ошибки. То есть имеет место быть не просто язык, а целая интегрированная среда его использования. К тому же язык 1С рассчитан на многопользовательских режим работы. Поэтому там стоят различные проверки режима работы программы. Все это накладывает отпечаток на производительность. Как я уже сказал, это все равно, что сравнивать Java и С++, или С# и C++. В перрвые языки уже многие средства высоокого уровня встроены, и пользователю языка не нужно заботиться о многих вещах. А в с++ аналогичные вещи придется разрабатывать самостоятельно, как говорится, с чистого листа. То же самое и в отношении 1С. Если бы вы решили самостоятельно разработать язык на освное Harbour для бухгалтерских задач, вы увидели бы, сколько бы вам пришлось бы надстраивать над этим базовым языком дополнительных слоев, и как производительность постепенно бы снижалась.

Сыроежка: Добавлю еще, что когда в Harbour вы используете локальные переменные, то Harboir не хранит о них информации, то есть об имени переменной и т.д. А потому в сулчае ошибки во время выполнения, пользователь не получит сведений об имени переменной. В 1с для переменных строится таблица, которая хранит названия этих переменных, точно также как это делается пря private или public переменных в Harbour. То есть изначально при создании языка ставились разные приоритеты. В 1С главным приоритетом был понятность и доступнос ь пользователям- не программистам.

Pasha: А вот это как раз те самые проблемы индейцев, которые меня, шерифа, не волнуют. Наверное, много чего в движке 1с сделано плохо, раз мы имеем такой результат. Да и покажите мне пользователя, который будет копаться в конфигурации 1с. Нет, конечно, всякое бывает, земля российская рождает платонов с невтонами, но это будет редким, редчайшим исключением. Работа с конфигурацией = это как раз функция т.н. "программиста 1с", да и то не всякого. Большинство просто ставят готовые конфигурации. Так что Вы цель создания встроенного языка 1с определили неверно. Конечный пользователь не знает и не должен знать о его существовании.

Pasha: Смешались в кучу кони, люди. У меня, положим, тоже есть класс справочник, функции создания форм и много чего еще. Но к производительности интерпретатора это отношения не имеет. Ттак же и в 1с. Есть предопределненные обьекты, у них какие-то свойства и методы. И есть интерпретатор, который работает с этими обьектами, но его главная функция - просто выполнять код. И он выполняет обычный код в 20 раз медленнее харбора. В 1с есть связь с исходным кодом, и в случае ошибки можно увидеть, где она возникла ? Все это есть и в харборе, но почему-то для 1с это является оправданием, а для харбора - нет. Многопользовательский режим работы с БД к производительности движка также не имеет отношения. То есть, этот фактор играет роль только при обращении к БД, а когда просто выполняется код - это никакого значения не имеет. Я сравнил производительность движка, и никаких оправданий тут быть не может. Кстати, движок харбора не всегда был таким мощным. Было время, когда харбор работал гораздо медленнее. Я имел возможность воочию наблюдать, как улучшался харбор, и даже принял в этом процессе некоторе участие, хоть и косвенное. Почему 1с не прошел этот путь - ну кто же им доктор.

AlexMyr: Сыроежка пишет: У них в приоритете стояла задача охватить встроенным языком все многообразие бухгалтерских задач, сделать его гибким, позволяющим настраивать и модифицировать любую часть программного комплекса, и при этом чтобы от пользователей не требовалось больших знаний в программировании. Можно хотя бы один пример 1с ф-ции, которая охватывает хоть малую бухгалтерскую задачу и для которой не нужно больших знаний в программировании. Сыроежка пишет: Pasha , мне бы было интереснее сравнить ваш собственный язык, который вы разработали самостоятельно для своей бухгалтерской программы, с языком 1С. Вот здесь был бы предмет для сравнения. А Вы всегда разрабатываете свой язык основываясь на другом языке, чтобы выполнить какую-то задачу? Вы профи

Dima: Clipper 5.2e Real Mode 85.19 Protected mode 99.96

Pasha: Dima пишет: Clipper 5.2e Real Mode 85.19 Protected mode 99.96 Это мой тест ? А в сравнении с харбором как клиппер будет ? Надо же запускать на одном и том же компьютере.

Dima: Pasha пишет: Это мой тест ? Да твой тест. Машинка такая Intel Pentium 4 630, 3000 MHz (15 x 200) 2GB RAM ЗЫ Harbour на этой машинке от 25 до 35 сек

Pasha: То есть, даже интерпретатор клиппера работает в разы быстрее, чем интерпретатор 1с, и это несмотря на то, что выполняется 16-ти разрядное приложение под дос-эмулятором. Прямо Феррари :)

AlexMyr: Version: Harbour 3.1.0dev (Rev. 17139) Compiler: MinGW GNU C 4.6.1 (32-bit) Platform: Windows XP 5.1.2600 Service Pack 3 с 19.50 без15.97 clipper 5.3(b) без 71.68 с ошибка Error BASE/1209 String overflow: + Called from MAIN(24) cc1 += L_C + chr(nn1 % 256)

Сыроежка: Сыроежка пишет: цитата: У них в приоритете стояла задача охватить встроенным языком все многообразие бухгалтерских задач, сделать его гибким, позволяющим настраивать и модифицировать любую часть программного комплекса, и при этом чтобы от пользователей не требовалось больших знаний в программировании. AlexMyr пишет: Можно хотя бы один пример 1с ф-ции, которая охватывает хоть малую бухгалтерскую задачу и для которой не нужно больших знаний в программировании. Причем здесь функции? Вы что так наивно думаете, что одна функция должна решать полностью какую-то бухгалтерскую задачу? Это все равно, что сказать, что Harbour должен состоять из одной функции, которая решает любую задачу программиста. Так что, извините, но никакого смысла в вашей реплике я не вижу. Под охватом многообразия бухгалтерских задач имеется в вииду, что вы можете работать со справочниками, документами, создавать формы входных и выходных документов, делать запросы по любому критерию на встроенном языке. У них для каэжого объекта в терминах бухгалтерских категорий создан соответствующий объект в терминах объектов языка программирования. И это достаточно удобно. Сыроежка пишет: цитата: Сыроежка пишет: Pasha , мне бы было интереснее сравнить ваш собственный язык, который вы разработали самостоятельно для своей бухгалтерской программы, с языком 1С. Вот здесь был бы предмет для сравнения. AlexMyr пишет: А Вы всегда разрабатываете свой язык основываясь на другом языке, чтобы выполнить какую-то задачу? Вы профи А этот ваш вопрос вообще не понятен. Причем здесь то, разрабатывал лично я свой язык, основыцваясь на другом языке или нет? Я разве какие-то выдвигаю претензии, что я сам сделал лучше 1С? Я не имею отношение ни к разработке 1С, ни к разработке Harbour. Но если говорить о бухгалтерских программах, то очевидно, что они должны иметь встроенный язык, позволяющий пользователям самостоятельно выполнять различные запросы. Иначе программа совершенно не нибкая и для получения любой даже самой примитивной справки или отчета придется обращаться к разработчикам.

PSP: Думается, что любой объект (языки программирования - не исключение) существует, пока кто-то в нём нуждается. Т.е., и 1C и Harbour существуют одновременно не для соревнования. Они в разных мирах. Есть мир 1С и есть мир Harbour. Какой смысл их сравнивать? Это все равно, что сравнить две лопаты: штыковую и для уборки снега. И та, и другая - лопата. Но каждая имеет свое предназначение, т.е. существует в своём мире. Не ломайте копья, парни...

Pasha: Мне просто захотелось посмотреть, насколько хорош движок харбора, вот я и сравнил его с тем, что оказалось под рукой. Еще интересно было бы сравнить с java. А насчет 1с - я подобный нынешнему тест: огромный цикл с простейшими вычислениями - гонял лет 5-6 назад с тогдашним харбором и 1с 7.7. Результат и тогда был в пользу харбора: быстрее на 2 порядка, то есть (не удивляйтесь) в 100 раз. Так что с тех времен у 1с наблюдается несомненный прогресс. Хотя, конечно, я взял сильное место харбора и (как оказалось) слабое место 1с.

Dr. Oldwarez: Ну, java вообще работает как черепаха. И интерфейс кривой и подключение баз данных - НЕЧТО. И вообще очень запутанный язык, даже сложнее, чем Си. 1с - это как бы Visual Basic, переведенный на русский язык. Кривоватый и чересчур узконаправленный, но это единственный успешный РУССКИЙ язык программирования. Я английский знаю и по мне так лучше Visual Basic, если бы он не таскал за собой кучу DLL. Foxpro под ДОС - это мой первый язык. Помню XT-шку с зелёным экраном, на которой и писались программы под FOXPRO. Visual Foxpro - это уже "смесь бульдога с носорогом". И туёва хуча DLLек для запуска в автономном режиме.

AlexMyr: Dr. Oldwarez пишет: Ну, java вообще работает как черепаха Это да, чего стоит работа с клиент банком от бифита, надо уметь так писать

Dr. Oldwarez: Непонятно только, чего эту жабу сейчас всюду суют. От неё только компы висят.

Pasha: Прогнал свой тест на java. Java оказался примерно в 5 раз быстрее харбора. Таким образом, получается, если движок харбора - это реактивный истребитель, то движок java - космическая ракета.



полная версия страницы