LINUX.ORG.RU
 

Groovy++ догоняет Java по скорости


0

0

Осенью открылся проект по разработке статического компилятора с Groovy, называемый Groovy 1.8 или Groovy++ code.google.com/p/groovypptest/

Тесты, проведенные Nick Wiedenbrueck, показывают что производительность получаемого Groovy++ байткода лишь незначительно (в ~1,5раза) уступает байткоду, получаемому javac

>>> Подробности

ПОСАДИ КОМПЬЮТЕР НА ЦЕПЬ И ЗАСТАВЬ ЛАЯТЬ!

домашняя автоматизация: сделай сам; лучший подарок для техногика

http://www.unicontrollers.com/products/unc01x

[#]  
tia

1,5 раза? Незначительно?

* ()
[#] Ответ на: комментарий от Novell-ch 07.02.2010 23:59:21  
real_kas

ну так java же обгоняет asm

наверное асм обгоняет жабу, а не наоборот

* ()
[#]  
Steplton

В полтора раза тормознее тормозной жабы? ТАНУНАФИГ!

*** ()
[#] Ответ на: комментарий от tia 07.02.2010 23:53:39  
Fice

> 1,5 раза? Незначительно?

Для динамического языка это действительно очень небольшое отставание. Если это действительно так, Groovy теперь должен сильно обгонять по производительности Python и Ruby.

** ()
[#]  

Я думал тормознее явы ничего нет

anonymous ()
[#] Ответ на: комментарий от anonymous 08.02.2010 0:13:30  
BaBL

эм... по ссылке есть результаты теста, там груви++ В 42!!! раза медленнее... откуда 1.5?

* ()
[#] Ответ на: комментарий от BaBL 08.02.2010 0:22:51  

Это первый тест. Там есть followup

**** ()
[#] Ответ на: комментарий от anonymous 08.02.2010 0:13:30  

Как же нет. Писон тормознее явы

**** ()
[#]  
vertexua

АААА!!! Я ждал этой новости каждый день!

Раньше только необычайная тормознутось останавливала от использования. Но теперь ее нет.

Те кто читал о этом языке и смотрел примеры с кодом поняли, что следует ждать нескольких больших "языко-капецов" ))) Учитывая что Groovy не надо учить. Java код почти всегда - правильный Groovy. Пишешь на Java в файлах *.groovy, учишь Groovy, по мере роста знаний вставляешь синтаксические вкусности.

*** ()
[#] Ответ на: комментарий от anonymous 08.02.2010 0:13:30  

Ну как же, SBCL Lisp тормознее джавы.

()
[#] Ответ на: комментарий от Karapuz 08.02.2010 0:24:40  
vertexua

И еще почти все остальное тормознее кроме C, C++, hand-tuned assembly, Objective-C, Fortran.

*** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 0:28:13  

> Раньше только необычайная тормознутось останавливала от использования.

И зависимость от пухленькой платформы.

*** ()
[#] Ответ на: комментарий от Fice 08.02.2010 0:12:26  

> Для динамического языка это действительно очень небольшое отставание.

Ты по ссылке сходи - где ты там динамическую типизацию видишь?

***** ()
[#] Ответ на: комментарий от naryl 08.02.2010 0:33:14  
vertexua

От мощнейшей платформы. Это ни за что не останавливало

*** ()
[#] Ответ на: комментарий от tailgunner 08.02.2010 0:35:09  
"mySong = new Song(length:90, name:"Burning Down the House")
myBook = new Book(name:"One Duck Stuck", author:"Phyllis Root")

doSomething(mySong) //prints Burning Down the House
doSomething(myBook) //prints One Duck Stuck

anotherSomething = doSomething

anotherSomething(myBook) //prints One Duck Stuck

http://www.ibm.com/developerworks/java/library/j-alj08034.html

()
[#] Ответ на: комментарий от e3d08dff 08.02.2010 0:43:12  
vertexua

Дело в том, что при динамической типизации производительность не может быть очень высокой. Это Groovy.

Статья о Groovy++, что есть статический Groovy, тоесть вышеназваный без использования динамической типизации

*** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 0:48:13  

>без использования динамической типизации

Не нужен.

anonymous ()
[#] Ответ на: комментарий от e3d08dff 08.02.2010 0:43:12  

Ты хоть прочитал то, что я написал? Вот код на Groovy++:

   1. @Typed  
   2. package test  
   3.   
   4. def swap(int[] a, int i, int j) {  
   5.     def temp = a[i]  
   6.     a[i] = a[j]  
   7.     a[j] = temp  
   8. }  
   9.   
  10. def quicksort(int[] a, int L, int R) {  
  11.     int m = a[((L+R)/2).intValue()]  
  12.     int i=L  
  13.     int j=R  
  14.     while (i<=j) {  
  15.         while (a[i]<m) i++  
  16.         while (a[j]>m) j--  
  17.         if (i<=j) {  
  18.             swap(a, i, j)  
  19.             i++  
  20.             j--  
  21.         }  
  22.     }  
  23.     if (L<j) quicksort(a,L,j)  
  24.     if (R>i) quicksort(a,i,R)  
  25. }  
  26. def quicksort(int[] a) {  
  27.     quicksort(a, 0, a.length-1)  
  28. }  
  29.   
  30. // Sample data  
  31. int[] a = new int[100000]  
  32. a.eachWithIndex {int x, int i ->  
  33.     a[i] = i*3/2+1  
  34.     if (i%3==0) a[i] = -a[i]  
  35. }  
  36.   
  37. int t1 = System.currentTimeMillis()  
  38. quicksort(a)  
  39. int t2 = System.currentTimeMillis()  
  40. println t2-t1   

а свою ссылку... ну ты понЕл.

***** ()
[#]  

>называемый Groovy 1.8 или Groovy++

ээ.. он называется только Groovy++, на Groovy 1.8 он просто базируется

**** ()
[#]  

также стоило написать, что G++ - это не отдельный язык, а дополнение к компилятору groovy, и в одном классе вполне можно использовать полностью динамические groovy-методы и статически компилируемые g++-методы

**** ()
[#]  

Ну ясно все, очередной никому не нужный язык.

()
[#] Ответ на: комментарий от anonymous 08.02.2010 0:49:45  
vertexua

Честно говоря я более склоняюсь в варианту что языки _с_ динамической типизацией не дают никакого выигрыша, зато приносят тормоза и ошибки.

Мне нужен Groovy (тем более ++), так как он совместим с Java и имеет горы синтаксического сахара. По мере изучения Scala вопрос снимается, так как замечаю что это в разы более серьезная разработка. Но вот выходят такие новости, что тормоза пропали и есть статический Groovy, и сразу интерес растет осень быстро

*** ()
[#]  
r

Очень хорошо. А то неадекваты в рассылке опенждк с ужасом который они изобретают как жава7 задрали. Такое впечатление что они не заметили последние 15 лет и думают что сейчас до сих пор 95 год.

PS: Автор груви сказал, что если бы он знал про скалу в свое время - то он не писал бы груви.

***** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 0:57:17  
r

>Честно говоря я более склоняюсь в варианту что языки _с_ динамической типизацией не дают никакого выигрыша, зато приносят тормоза и ошибки.

Просто почти никто не умеет их готовить. А так область у них вполне есть. prototype-языки, динамически построенные прокси, прозрачные биндинги к чему-либо и т.д.

***** ()
[#] Ответ на: комментарий от r 08.02.2010 1:01:37  
vertexua

> прозрачные биндинги к чему-либо и т.д.

Это наверное самое внятное применение.

*** ()
[#] Ответ на: комментарий от Fice 08.02.2010 0:12:26  

> Для динамического языка это действительно очень небольшое отставание.

Что-то я не понял. Компилятор статический, а язык динамический?

***** ()
[#] Ответ на: комментарий от thevery 08.02.2010 1:02:15  
r

>тут, собственно, пишут о похожих вещах - у g++ больше шансов стать java.next языком, чем у scala:

Чудаки которые пишут это:

> I don't think its mixing of imperative and functional styles along with its weird, clearly academically experimental syntax will win out.


в качестве экспертного менния не канают.

***** ()
[#] Ответ на: комментарий от thevery 08.02.2010 1:02:15  
vertexua

Scala - самостоятельный язык, он не похож на Java. Он разработан как для самостоянельной разработки, так и в паре с Java в одном проекте. Он не может стать next Java, так как не наследует ее.

Groovy - полигон фич для Java на будущее, ИМХО

*** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 1:06:45  
r

>Он разработан как для самостоянельной разработки, так и в паре с Java в одном проекте.

Скоро год как - полет нормальный.

***** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 1:06:45  

>Scala - самостоятельный язык, он не похож на Java [...]

я как бы в курсе, но это не меняет того факта, что некоторые проекты пишут только на scala, без java в явном виде.

>Groovy - полигон фич для Java на будущее, ИМХО


ну разработчики groovy сейчас имеют мало отношения к разработчикам java, да и groovy в плане синтаксического сахара и фич уже очень далеко от java ушёл.

**** ()
[#]  
r

но вот руби они этим конечно яйца отрезали по самое горло. У руби по идее один выход - загнаться под llvm на перспективу - иначе придется тихо стагнируя умирать.

***** ()
[#] Ответ на: комментарий от thevery 08.02.2010 1:11:49  
vertexua

> да и groovy в плане синтаксического сахара и фич уже очень далеко от java ушёл.

смотрите ссылки которые я запостил выше. это маленькие примеры

*** ()
[#] Ответ на: комментарий от r 08.02.2010 1:12:02  

а как это влияет-то? Groovy же уже давно быстрее ruby...

Headius, кстати, уже давно пилит Duby - статическая версия JRuby

**** ()
[#] Ответ на: комментарий от vertexua 08.02.2010 1:26:25  

>смотрите ссылки которые я запостил выше. это маленькие примеры

ээ.. я-то как бы groovy давным-давно уже использую и про эти примеры знаю...

**** ()
[#] Ответ на: комментарий от anonymous 08.02.2010 0:13:30  
iZEN

Перепиши Eclipse на C++ — ощутишь.

***** ()
[#] Ответ на: комментарий от mono 08.02.2010 1:08:23  

>вообще-то давно доказано, что java бысирее asm'а.
Где доказано, кем?

* ()
[#] Ответ на: комментарий от iZEN 08.02.2010 1:30:08  

>Перепиши Eclipse на C++ — ощутишь.
Не как о должном говорить о своих убогих попытках писать на C++ зафейленных из-за нехватки мозга, ок?

* ()
[#]  
real_maverick

писькомерство уже задолбало

все зависит от задачи и сколько времени есть на ее решение (считай бабла), а что там использовать... да пофиг по большому счету, главное чтобы задача была решена и она удовлетворяла ожижаниям заказчика.

p.s. да asm быстрее и C быстрее жабы, но при дрпустимых латенси, скорость написания на той же жабе будет в разы (если не в 10ки разов) быстрее. если прилада удовлетворяет требованиям да поКер на чем писать, всегда ваш K.O.

*** ()
[#] Ответ на: комментарий от anotheranonymous 08.02.2010 1:31:36  
mono

прогрессивным человечеством :)

***** ()
[#] Ответ на: комментарий от iZEN 08.02.2010 1:30:08  

> Перепиши Eclipse на C++ — ощутишь.

что да, то да - тот же Visual 2008 по сравнению с эклипсом как истребитель против улитки.

**** ()
[#] Ответ на: комментарий от mono 08.02.2010 1:39:58  

>прогрессивным человечеством :)
Ну тогда такое человечество не нужно.

* ()