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

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

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



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