LINUX.ORG.RU

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

 , , , ,


0

0

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

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

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

Ответ на: комментарий от anonymous

> Реальные задачи требуют нормальную производительность.

Реальные задачи бывают очень разные. И подавляющее большинство из них от производительности никак не зависит, потому как 99% времени проводится в ожидании ввода-вывода.

А не в полтора и не в 42 раза худшую чем даже у джавы.

Сказанул, как отрезал. Если б у тебя еще и мозги были при этом, то может твои голословные, никак не связанные с практикой взвяки чего-то и стоили бы. Но так - у тебя выходит только детский лепет.

Количество обрабатываемой информации в современном мире растёт даже быстрее, чем скорости процессоров, время уже стало дороже всего.

Ути-пути. Умные слова выучил, а складывать их в умные фразы еще не научился.

anonymous
()
Ответ на: комментарий от LamerOk

> Ровно затем же, зачем нужны: питон, чихпых, перл и многие другие, менее известные.

А ты и правда считаешь, что Питон и ПХП - языки одинакового назначеня? %)

tailgunner ★★★★★
()
Ответ на: комментарий от yyk

> >Специалисты, скажите, зачем вообще клепают языки для JVM - чтобы медленней работало?

С тех пор, как комп стал дешевле кодера - чтоб кодер быстрее работал.

Отлично, пусть быстро работает, если новый синтаксис нравится. Только зачем итог этой работы делать тормозным JVM-поделием, если можно сделать быстрый софт для реальной машины?

Дутая «переносимость» уже давно никому не нужна - реально на сервере в большинстве случаев будет x86_64 и выбор ОС тоже невелик, почему бы сразу для реальной жизни не компилить?

За серверами жизни нет?

Предлагаешь это для декстопа?? Т.е. юзер скачает и установит себе JVM, после чего сообразит как запустить инсталлятор на груви, чтобы установить себе программу фотошоп-на-груви, чтобы в итоге это работало в полтора..42 раза медленнее даже джавы?

anonymous
()
Ответ на: комментарий от anonymous

> Отлично, пусть быстро работает, если новый синтаксис нравится. Только зачем итог этой работы делать тормозным JVM-поделием, если можно сделать быстрый софт для реальной машины?

Ты дрочишь на быстрый софт? Дрочи дальше, детко. А индустрии нужен быстро разрабатываемый и дешевый в поддержке софт. Разница в несколько раз в скорости никому не интересна.

anonymous
()
Ответ на: комментарий от anonymous

>после чего сообразит как запустить инсталлятор на груви

ну толсто же, тут для groovy не нужен отдельный инсталлятор

thevery ★★★★
()
Ответ на: комментарий от anonymous

> Специалисты, скажите, зачем вообще клепают языки для JVM - чтобы медленней работало? Дутая «переносимость» уже давно никому не нужна - реально на сервере в большинстве случаев будет x86_64 и выбор ОС тоже невелик, почему бы сразу для реальной жизни не компилить?

Основные Java-вендоры(IBM, Oracle) имеют и собственные ОС, и процессоры. Так что не все работают с Mac/Win/Linux.

Говоря о компиляции - есть же HotSpot & JIT: толку от AOT особо не будет для приложений, которые крутятся на сервере. На клиенте - возможно, но тут Java никто особо не использует.

Для чего нужен.. Groovy - прекрасно видно на примере Grails, Jython - используется в серверах приложений IBM/Oracle для удобства администраторов, JRuby - выручает рубистов на некоторых платформах + удобен для коробочных решений(ThoughtWorks, Github), Scala - хоть и используется в Twitter, Foursquare и др. - проект во многом исследовательский. Наряду с Clojure они предоставляют возможности для ФП на JVM.

anonymous
()
Ответ на: комментарий от GreenE

Все предрешено только для тех, кто изучил Java поверхностно

Ну а вот это:

int m = a[((L+R)/2).intValue()]
int m = a[(L+R) >> 1]

при чём тут Java к сдвигу регистров? Эдак можно дооптимизировать до написания asm-интерпретатора на java.

los_nikos ★★★★★
()
Ответ на: комментарий от tailgunner

Я считаю, что это - инструментальные средства одного и того же порядка.

LamerOk ★★★★★
()
Ответ на: комментарий от Divius

> Они опять изобрели компилятор для Питона?

Они расширили язык. Гвидо, к сожадению, на это не пошел :/

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> > Реальные задачи требуют нормальную производительность.

Реальные задачи бывают очень разные. И подавляющее большинство из них от производительности никак не зависит, потому как 99% времени проводится в ожидании ввода-вывода.

Система ждёт когда ты слоупок эни кей нажмёшь? Или диски медленные - тогда попроси у родителей купить тебе комп побыстрее. :) А то 99% времени проводишь в ожидании ввода-вывода.

> А не в полтора и не в 42 раза худшую чем даже у джавы.

Сказанул, как отрезал. Если б у тебя еще и мозги были при этом, то может твои голословные, никак не связанные с практикой взвяки чего-то и стоили бы. Но так - у тебя выходит только детский лепет.

Это данные самих разработчиков. Так что детский лепет только у тебя - по сути ничего сказать не можешь, ибо нечего.

> Количество обрабатываемой информации в современном мире растёт даже быстрее, чем скорости процессоров, время уже стало дороже всего.

Ути-пути. Умные слова выучил, а складывать их в умные фразы еще не научился.

Ты слова во фразы складывать не научился, а уже на лоре комментировать лезешь? Рановато, научись сначала понимать смысл того, что написано.

anonymous
()
Ответ на: комментарий от anonymous

ай... тебе уже много сказали. Не хочешь писать - не пиши. Не хочешь понимать - не понимай. Свобода - да... ;)

yyk ★★★★★
()
Ответ на: комментарий от Steplton

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

Вот-вот-вот! Мля, я это скажу и по сабжу, и чисто в знак согласия.

k0valenk0_igor ★★★
()
Ответ на: комментарий от thevery

т.е. вы-таки осилили увидеть follow-up? Ну так теперь кликните по ссылке и прочитайте его.

Т.е. это нормально когда в ссылке «подробности» нифига не пишут откуда взяты "(в ~1,5раза) уступает байткоду, получаемому javac"?

Мда, и всё-таки, при чём тут замена деления на сдвиг регистра? В Java и Groovy нету сдвига регистра? В чём там юмор? Спрашиваю как осилившего все ссылки с этого поста и связанные с ним другие посты, код гордящегося этим фактом ЛОРовца.

los_nikos ★★★★★
()
Ответ на: комментарий от tailgunner

>> Visual 2008 по сравнению с эклипсом как истребитель против улитки.

Чо, _настолько_ толще? O_O

Нет быстрее
Чесно говоря даже Komodo быстрее эклипса. А он на Javascript написан.
Сравниваю на основе Perl плагина для Eclipse(EPIC) и Komodo IDE

Borg
()
Ответ на: комментарий от Borg

> Сравниваю на основе Perl плагина для Eclipse(EPIC) и Komodo IDE

Ну так и говори: «ИМХО, EPIC тормознее Komodo».

А что этот Komodo умеет, кроме Perl? Python, C/C++, Java? Какие VCS поддерживает?

tailgunner ★★★★★
()
Ответ на: комментарий от lester

>см. список дополнений - в эклипсе ведь точно также все через них сделано

Есть одно «но» - в эклипсе, это просто кирпичи из которых строишь среду, а M$ IDE - платные дополнения. По-ходу, что-то вроде супермаркета, где даже расположение товаров крутит тебя на бабло!

k0valenk0_igor ★★★
()
Ответ на: комментарий от k0valenk0_igor

Лучше заплатить копеечку за то, что хорошо работает, чем жрать бесплатную каку.

Тем более что стоимость всех этих тулзов микроскопическая по сравнению со стоимостью даже одного разработчика.

anonymous
()
Ответ на: комментарий от k0valenk0_igor

> Копейка - рубль бережет. Если всяким буржуям по копеечке дарить, - копеечек не напасешься.

Надо же, какой глупый нищий ребёнок! Рубль бережет не копеечка, а более высокая эффективность труда разработчиков, надёжность и качество тех. поддержки, и прочие подобные факторы.

Запомни, нищий ребёнок, что скупой всегда платит дважды. Нельзя экономить на средствах производства.

anonymous
()
Ответ на: комментарий от anonymous

Лучше заплатить копеечку за то, что хорошо работает, чем жрать бесплатную каку. Тем более что стоимость всех этих тулзов микроскопическая по сравнению со стоимостью даже одного разработчика.

Я вот сейчас на соседнем рабочем столе пишу логику + работу со строками + построение графиков. Мне вполне хватает geany, потому что я пишу на Питоне. VS + Fortran вспоминаю как страшный сон.

Vudod ★★★★★
()
Ответ на: комментарий от GreenE

>Имхо, надо развивать что-то одно, а не плодить языки программирования.

Ага. А потом это единственный и неповторимый язык, хапнет единственная и неповторимая копания (Оракл, Гугл, M$ или кто там еще?), понаделает «дилерских цепочек», понапечатает сертификатов (люди гибнут за картон1) и еще всяко изгалится дабы поиметь бабал поболее.

....А споспешествование прогрессу становится при этом просто досадным недоразумением.

А так все хорошо начиналось, а?

k0valenk0_igor ★★★
()
Ответ на: комментарий от Vudod

>>чем жрать бесплатную каку

Я вот сейчас на соседнем рабочем столе пишу логику + работу со строками + построение графиков. Мне вполне хватает geany, потому что я пишу на Питоне.

Точно!

Я тоже постоянно пишу на питоне и тоже в geany. И тоже хватает за глаза. А ребята у нас на конторе пишут на пых-пых в этом IDE и тоже хватает. Так что о «каке» поспорим!

k0valenk0_igor ★★★
()
Ответ на: комментарий от anonymous

>Запомни, нищий ребёнок, что скупой всегда платит дважды. Нельзя экономить на средствах производства.

Во, тюлень дрессированый! Хому рассказывать вздумал, а? Улыбнул! Да ты видать из работников мечтающих, что бы на них не экономили, не иначе.

Запомни, детка, считать надо все. И если есть возможность НЕ заплатить, то платить НЕ стоит по-любому. И для того что бы так и было и есть ИТ-аналитики на конторе.

k0valenk0_igor ★★★
()
Ответ на: комментарий от tailgunner

>А что этот Komodo умеет, кроме Perl? Python, C/C++, Java?
http://www.activestate.com/komodo/

Komodo IDE supports PHP, Python, Ruby, Perl and Tcl, plus JavaScript, CSS, HTML and template languages like RHTML, Template-Toolkit, HTML-Smarty and Django.

Какие VCS поддерживает?

support for CVS, Perforce, Subversion, Git, Mercurial and Bazaar

Borg
()
Ответ на: комментарий от los_nikos

>Т.е. это нормально когда в ссылке «подробности» нифига не пишут откуда взяты "(в ~1,5раза) уступает байткоду, получаемому javac"?

ну промазал автор слегка ссылкой, а модератор и не проверил, бывает

Мда, и всё-таки, при чём тут замена деления на сдвиг регистра? В Java и Groovy нету сдвига регистра?


в groovy нет целочисленной математики, что даёт нехилые расходы на простое деление пополам. g++ же за счёт статической компиляции/вывода типов позволяет сделать финт ушами и сделать-таки недорогое деление. В результате чего в данном тесте отставание g++ от java/scala сокращается почти в 30 раз почти без изменения кода. Т.е. приличная часть синтаксического сахара теперь доступна почти без оверхеда по производительности почти без изменения кода.

thevery ★★★★
()

Когда тут говорят о средах разработки, то почему-то не вспоминют NetBeans, которые действительно уже по всех фронтах в разы лучше Eclipse и MSVS. Я думаю что он может уступать Visual Studio на майкрософт специфических технологиях.

Относительно groovy, то лично я не побегу переписывать что не попадя на groovy, но когда я пишу второстепенную тулзу, утилиту, которая помогает работе главной программы, при этом не делает high-performance вычисления, но при этом может обладать рутинной логикой, то конечно groovy интересен и удобен. И эта утилита может быть не отдельным продуктом, а просто набором классов в существующем Java приложении.

Относительно двух анонимусов, то только необразованная школота позволяет себе такой дешевый лексикон, особенно прикрываясь анонимусами. Причем спор просто основан на двух субъективных взгладах, которые не претендуют на истину, но в равной мере имеют большую долю правды. Оба человека достаточно тупы, чтобы этого не понимать.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

> почему-то не вспоминют NetBeans, которые действительно уже по всех фронтах в разы лучше Eclipse и MSVS

хорошее IDЕ, его как раз и использую в Linux, из минусов разве что редкая необходимость руками править Makefile( из-за желания его авторов максимально скрыть «лишнее» в настройках )

lester ★★★★
()
Ответ на: комментарий от vertexua

я бы в этот ряд еще поставил IntelliJ IDEA. Тоже удобная вещь. Тут все зависит от задач + кто к чему привык.

GreenE
()
Ответ на: комментарий от lester

Я никогда не правлю. Меня смущает то, что если я юзаю pkg-config, то оно не добваляет полученные каталоги для code completion и подчеркивает #include, что мол не нашло хеадер. Но соотвественно компилит.

Очевидно, что то, в чем code completion не помешал бы, как раз и требует code completion, который в NetBeans неслабый. По ходу сильнее MSVS

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

> оно не добваляет полученные каталоги для code completion

Надо удалять кэш из .netbeans/.../cnd/*

Почти что официальная бага.

По ходу сильнее MSVS


MSVS идёт в комплекте с хэлпом по стандартным библиотекам, не говоря уже о вендовых. NetBeans CND хэлп просто не умеет, как я понял. Ни доксиген проекта, ни тем более отсутствующую доку по стандартной библиотеке.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

> Почти что официальная бага.

Вы не поняли. Оно не должно работать, так как оно не обязано понимать что нужно брать вывод команды pkg-config

vertexua ★★★★★
()
Ответ на: комментарий от ZeMvlad

У меня java не тормозит, что мне делать?

p.s. программирую на java

Потому и не тормозит :)

У меня Питон тоже не тормозит. Программирую на Питоне.

Vudod ★★★★★
()
Ответ на: комментарий от LamerOk

Что в плагине нет специального места для pkg-config )))

vertexua ★★★★★
()
Ответ на: комментарий от los_nikos

Т.е. это нормально когда в ссылке «подробности» нифига не пишут


Нет, не нормально, я из неправильной владки ссылку взял, открыл 3 штуки и в подробности неправильную засунул. виноватисправлюсьвашбродiе!

Karapuz ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Томми, ты?


Мимо, это корпорация Azul. У них жаба не тормозит, видимо ZeMvlad из их стана

Karapuz ★★★★★
() автор топика
Ответ на: комментарий от sv75

Огласите пожалуйста остальные пункты, для несведущих и ленивых.

Примеры:

a) project coin, спецификация т.н. 'diamond' - апофигей маразма. В жабе работает вывод параметров типов например для такого: (1.1)

<T> List<T> getList() {...}
...
List<String> l = getList(); //тип парамиетра будет выведен.
но вывод не работает для конструкторов - для чего и сделана спека диамод. но почему то в спецификации 'Diamond' узрели «неоднозначность» в вызове вида: (1.2)
List<String> l = new ArrayList();
мол а вдруг я хочу rawtype? И потому они придумали мегаштуку вот такой синтаксис: (1.3)
List<String> l = new ArrayList<>();

от чего и называется diamond. А то что: * вдруг я хотел rawtype в примере 1.1? Но там почему-то не парит и никаких проблем в реальности. * rawtype при инициализации 1.2 не имеет никакого смысла - все равно переменная строго типизирована - то есть эскейпинг равтайпа дальше оператора new не идет. * учитывая type erasure для java generics этой разницы по факту _вообще нет_ потому что компилятор дропает эту инфу.

Вывод: они были высажены на измену тяжелыми наркотиками когда придумали диамонд, обосновав его столь маразматичными причинами.

b) Лямбдашарп или пусть живет перл. Оказывается они там не хотят вводить новых ключевых слов - но не против ввести ключевые иероглифы. Потому для определения замыкания или «function type» они его начинают... с символа #! И послушайте как обоснование - в жавадоке локальная ссылка на метод так! А то что это просто HTML fragment reference - в голову не пришло им. Но решотка оказывается не всем подходит решетка и потому есть предложение заменить его.. на крышу ^ !!! А есть предложения еще круче - function type - решетка - лямбда - крыша! То есть лямбда вида:

#int(int) inc = ^(int x) {x + 1};

не кажется никому странной. Особенно учитывая что есть куча удачных синтаксисов вкупе с BGGA реализацией для жабы без всяких иероглифов.

Но дальше - круче. c) что такое лямбда или жаба-программеры - идиоты. Они там совершенно серьезно пишут пассажи вида «лямбда среднему жаба програмеру может быть обяснена как менее многословный анонимный класс». Оказывается концепция замыканя - это мля слишком сложное понятие! Из этого растут маразмы вида:

d) invoke! а как же - программист (программист мать его так!) не поймет что такое:

i = inc(i)

Не по жабски это эказывается. По жабски надо:

i = inc.invoke(i)

!!!! А как же - очевидно выхов метода - а функция - это высший пилотаж - запредельная сложность. Один маразматик доказывал что «closure - это не функция» - пока его не ткнули в определение! И эти люди пишут спеки на жабу!!

e) если методвозвращает функцию то ее аппликация будет выглядеть как:

m()();

Ага - да опять нереально сложная концепция - слишком много скобок - 'жабапрограммисты' сойдут сума! Поэтому предложим мегасинтаксис

m()!()
Тут вылезает Блох откуда нивозьмись с гениальной идеей вида: «Си-программисты привыкли к звездочке в указателях на функции потому давайте сделаем»:
m()*();
f*();
и прочие маразмы подобного вида. Нил Гафтер (хотя и является там одним из самых вменяемых) носится со своим control invocation syntax и non-local transfers для return, break, continue.

В результате доходит до вот таких уродов:


#(String)->int (throws IOException, InterruptedException) stringLength;

stringLength = #(String s) int (throws IOException,
InterruptedException) length: {
if (s == null) break length = -1;
length = s.length();
};

И ОНИ СЕРЬЕЗНО ОБСУЖДАЮТ ПОДОБНЫЕ ТЕМЫ!!!! Блох, Гафтер, Дуг Лии, и прочие! И все под соусом «программисты знакомые с С++» и «жабапрограммисты не поймут что такое функция».

r ★★★★★
()
Ответ на: комментарий от r

>length = s.length();

Паскалевский ретурн заметили?! В гребаный лабел. Просто хочется передушить всех работников сана котороые старше 40.

r ★★★★★
()
Ответ на: комментарий от r

Еще они там себя ведут так как будто изобретают что-то совершенно новое а не объезженое в десятках языков. Один из тамошних ответственных сантехников принял решение «не смотреть на другие языки - мол это плохой подход „смотреть как сделано у соседа“. Анализ существующих решщений - это оказывается „плохой подход“ - надо занятся велосипедостроением без знания даже базовых определений!!! Такое впечатление что вместе с падением сана - у сантехнимков острый ФГМ развился.

Самое интересное что туда влезают часто обычне люди и говорют мол люди не страдайте маразмом и не считайте нас илиотами. Но на такие посты у всяких блохов ЧСВ не позволяет отвечать - они как заведенные обсуждают вышеприведенные маразмы.


r ★★★★★
()
Ответ на: комментарий от r

Еще когда предложили не дублировать описания типа в определениях вида

#inc(int) inc = #int(int x) {x + 1};

а вывести их:

#inc(int) inc = #{x + 1};

некоторые маразматики завелись - ааа вывод типов, жабапрограмисты сойдут с ума ненене - все должно быть манифестировано и понятно, читабельностьб принтабельность прочая ФГМная хрень.

Поубивал бы.

r ★★★★★
()
Ответ на: комментарий от r

Блох, Гафтер, Дуг Лии, и прочие! И все под соусом «программисты знакомые с С++» и «жабапрограммисты не поймут что такое функция».


Sun поэтому и загнулся. Ничего, Одески напишет нам скалу и ниипет. А java7 останется мертворожденной спекой

Karapuz ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

>С чего бы? Даже питон еще жив и шевелится.

Питон в других областях применяется. А у руби только рельсы. Стандартная либа - глючна и убога. JRuby хрень непонятного назначения - убогая либа руби на jvm. Перспективно было бы стать языком в рамках llvm - если он разовьется в мощную платформу - тут и язычек будет. Питон к стати делают же гуглоиды.

r ★★★★★
()
Ответ на: комментарий от r

a) project coin


да мало ли что на заборе написано!

на http://openjdk.java.net/projects/jdk7/ ничего про _весь_ coin не сказано, а та часть, что уже внедрили, не имеет ничего общего с тем, что ты пишешь

по поводу diamond - на данный момент работает именно 1.2, а нетбинс даже ласковое предупреждение выдаёт при попытке типизировать вызов конструктора (выставил source в 1.7). На 1.3 вообще следует нецензурная ругань

b) Лямбдашарп


см. п.1. в самом openjdk пока даже не упоминается. Всякие давинчи - в пень.

учитывая type erasure для java generics


скорее, учитывая что расширенная сигнатура таки сохраняется с классами, полями и методами, речь идёт о том, что компилятор пока никак особенно не пользуется этой информацией:

$ javap -v classes/B.class
Classfile /c:/Work/x/build/test/classes/B.class
...
abstract class B<X extends java.lang.Object, Y extends java.lang.Object> extends java.util.HashMap<java.lang.String, java.lang.Integer>
Signature: #30 // <X:Ljava/lang/Object;Y:Ljava/lang/Object;>Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>;
...
java/util/HashMap<java/lang/Comparable<? extends Y>, X> map;
flags:
Signature: #7 // Ljava/util/HashMap<Ljava/lang/Comparable<+TY;>;TX;>;
...
public abstract <U extends java/lang/Comparable<? extends U>> java/util/HashMap<U, X> f6(java/util/HashMap<Y, U>);
flags: ACC_PUBLIC, ACC_ABSTRACT
Signature: #29 // <U::Ljava/lang/Comparable<+TU;>;>(Ljava/util/HashMap<TY;TU;>;)Ljava/util/HashMap<TU;TX;>;


P.S. Не читайте до обеда всякую дрянь. Пусть в коине на говно изойдут - про jsr вы забыли?

P.P.S. И даже если действительно изговняют Java, про изменения в jvm пока пока ничего не слышно. Помимо invokedynamic только лоск наводят

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.