LINUX.ORG.RU

Техническая статья Sun «Делаем Java быстрее чем С, используя LRWP»

 , , , , ,


0

0

Начав с технического решения на основе веб-сервера Xitami, имеющего некоторые проблемы с Соларисом (Running a copy in each zone improved performance by more than 100% but still was not the solution to the scalability problem with Xitami), группа инженеров, используя Java и технологию LRWP, добилась производительности на 78% большей, чем у системы на основе Xitami. Xitami назван в статье одним из top10 веб-серверов (one of the top 10 web servers). По отчету Netcraft ( http://survey.netcraft.com/Reports/20... ), на момент написания статьи Xitami имел долю в 0.006% от доли веб-сервера Apache, если считать по количеству сайтов.

>>> Making Java Technology Faster Than C with LRWP

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

>Тогда этот тест не имеет практического смысла.

Как и все остальные микротесты :)

Часто ли в прикладном коде попадаются циклы, аналогичные вышеприведенному? Где-то часто, где-то нет.

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

Ну фиг знает. Я не мерял, не знаю. В том же GTK есть множество довольно мелких методов, которые в свою очередь вызывают libglib/libgobject, которые являются отдельными .so-шками.

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

>Тоесть предоставить пример кода где Ваша жаба выигрывает у Ц по скорости Вы не можете и остается выкручиватся такими способами?

В смысле? Этот тест был совершенно сознательно так построен. Чтобы проявилась сильная сторона Hotspot-а -- глобальные оптимизации, которые конкретно в данной ситуации C недоступны. Именно поэтому в этом тесте C сливает, так что это ты тут пытаешься выкрутиться. В циклах слила Java, потому что у нее оказался оптимизатор послабее (что, впрочем, вполне поддается лечению).

А зарулил всех LLVM. При 8 годах разработки тягаться с gcc -- это круто, я считаю.

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

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

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

>Не надо этих чесов. Вы выкладывайте алгоритм реализация которого на жабе по вашему мнению обходит по скорости Цшныю, а уж я сам решу как мне его скомпилить и проверю Ваши результаты.

Да не приведу я тебе такого алгоритма. При такой постановке Java скорее всего сольет на любых тестах.

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

>Что такое, когда нормально протестировали и жаба снова всосала сказать больше умного нечего?

"Умное" можно сказать в ответ на умное, а не маразм.

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

> Однако сан не написал JVM настолько модульно, чтобы ее можно было обезжиривать (причем лучше всего находу) :-)

Java SE 6 Update 10 Early Access Program:
https://jdk6.dev.java.net/6u10ea.html
— модульная Ява. Обезжиривается на ходу.

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

Вообще, у Java Hotspot сильные стороны это 1) глобальные оптимизации 2) заточка под процессор при _запуске_, а не _заранее_.

1) тесно связано с динамической линковкой, которую я продемонстрировал. А 2) легко перебарывается компиляцией с нужными ключами (но это заточка _заранее_, если речь не идет о Gentoo :) ).

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

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

>Да не приведу я тебе такого алгоритма. При такой постановке Java скорее всего сольет на любых тестах.

Я же не требую обязательно такой же простенький с парой циклов. Можете что-то жизненое и посложнее взять. Всякие qsort или A*.

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

>Я же не требую обязательно такой же простенький с парой циклов. Можете что-то жизненое и посложнее взять. Всякие qsort или A*.

Без шансов. Странно было бы думать, что у Java тут вдруг проявится какой-то талант, которого за цать лет не реализовали в gcc.

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

>"Умное" можно сказать в ответ на умное, а не маразм.

Дадада пастушок, цепляйся дальше к словам. Что же ты сливаешся как до тестов доходит и только под314здываешь? Может ты тест, доказывающий мегаскорость жабы приведешь?

Кстати ты уже научился Haskell от Erlang`a отличать надеюсь?

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

>Без шансов. Странно было бы думать, что у Java тут вдруг проявится какой-то талант, которого за цать лет не реализовали в gcc.

Почему же? Тут конечно посчитать сложно, но думаю в Жаву за время ее существования больше денег вложили, чем в ГЦЦ.

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

>Что такого есть в фубаре? Что-то не понял я эту программу. Скрипт deaudiophilize.sh для превращения cue+ape в пачку ogg 256kb с тегами написал. Больше проблем с аудиофилией не имею.

ты наверное не слышишь разницы в звуке между mp3/ogg/aac(ac3, между aac и ac3 я тоже могу не услышать) и lossless?

а у меня музыка в APE, FLAC, TTA, WAVPACK, WAVPACK в ISO, TTA в MKA и тд (народ ещё пытается впаривать в ALAC, TAK).

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

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

Томми, уже не флейма ради: Вы так мучаетесь с этой пионерской поделкой Линуксом только ради пару сот лишних баксов которые дают жабакодерам за строчку в резюме "Опыт работы с Linux"?

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

>А почему не на питоне или .Net? Вы видите каке-то специфические преимущества у desktop application на java?

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

и зачем ограничиваться только desktop application? java подходит практически для всего (исключения происходит от того что java это не просто язык а именно платформа). почему не на питоне? потому что например никто под windows не пишет desktop application на питоне. проекты поставляемые непосредственно заказчику - не в счёт. да и всё равно библиотеки для кодирования/декодирования у подобной программы "на питоне" будут на C написаны.

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

линукс давно не пионерская поделка, а если вы с linux мучаетесь - переходите на Vistу или MAC OSX.

в linux всё нормально, но непонятно почему никто нормального аудиоплеера не написал. кто делает уродские глючные клоны winamp-а, кто вырождает монстров типа amarok. небольших, стабильных, функциональных, быстро работающих плееров типа популярных Apollo и foobar2000 - нет. почему я должен отказываться от качественных программ? по принципу "назло маме отморожу уши" - поступайте сами.

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

>Не знаю, у меня просто сложилось впечатления, что Вы с Линуксом страдаете :)

я не страдал с линуксом и в середине/конце 90-х - я тогда им не пользовался (пользовался FreeBSD и OS/2). потом linux из глючной поделки превратился в надёжную систему пригодную и для домашнего/офисного и для серверного применения.

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

> java -version
java version "1.6.0_03-p4"
Java(TM) SE Runtime Environment (build 1.6.0_03-p4-root_07_jun_2008_12_33-b00)
Java HotSpot(TM) Server VM (build 1.6.0_03-p4-root_07_jun_2008_12_33-b00, mixed mode)

> cat /home/igor/projects/Demo/src/Test4.java

///import java.lang.management.ManagementFactory;
///import java.lang.management.ThreadMXBean;
public class Test4 {

   public static void main(String[] args) { ///throws Exception {
      int count1 = Integer.parseInt(args[1]);
      int count2 = Integer.parseInt(args[2]);
      String clazz = args[0];
      DoSum d = null;
      try {
         d = (DoSum) Class.forName(clazz).newInstance();
      } catch (ClassNotFoundException ex1) {
         System.err.println(ex1.getMessage());
      } catch (InstantiationException ex2) {
         System.err.println(ex2.getMessage());
      } catch (IllegalAccessException ex3) {
         System.err.println(ex3.getMessage());
      }
      test(d, count1 + 1, count2 + 1);
      test(d, count1 + 2, count2 + 2);
      System.err.println("Real results");
      test(d, count1, count2);
      test(d, count1, count2);

   }

   public static void test(DoSum d, int count1, int count2) {/// throws Exception {
      ///ThreadMXBean mx = ManagementFactory.getThreadMXBean();
      ///long c = mx.getCurrentThreadCpuTime();
      long c = System.currentTimeMillis();
      int l = 0, i, j;
      for (j = 0; j < count1; ++j) {
         for (i = 0; i < count2; ++i) {
            l = d.dosum(l, i);
         }
      }
      ///long end = mx.getCurrentThreadCpuTime(); 
      long end = System.currentTimeMillis();
      ///System.err.println("l = " + l);
      ///System.err.println((float) (end - c) / 1000000000);
      System.out.println("l = " + l);
      System.out.println((end - c) / 1000);
   }
}

> cd /home/igor/projects/Demo/build/classes
> java Test4 DoSumImpl 10 1000000000
l = 1618564864
39
l = 490353676
34
Real results
l = 451808768
5
l = 451808768
5

Сишный код без изменений.

> cd /home/igor/projects/Demo/etc
> gcc -O3 -funroll-loops -finline-functions -shared dosum.c -o libdosum.so
> gcc -O3 -funroll-loops -finline-functions -ldosum -L. test4.c
> setenv LD_LIBRARY_PATH .
> ./a.out 10 1000000000
l = 451808768
43.171875

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

> Ну чо я могу сказать, молодцы, зачет. Наверное, он просто вывел формулу.

Ну я малость слукавил, вернее - "тупанул": я таки оптимизировал код, но
потом сделал "статическую линковку". Надо проверить именно JIT - 
результаты могут быть другие (а может и нет)...

Проверил. Получил логичный ответ, который совершенно не ожидал: llvm 
"втупую" просто компилит код перед выполнением - разницы никакой:

$ lli test4full.bc 10 1000000000
l = 451808768
47.780998

$ lli test4opt.bc 10 1000000000
l = 451808768
0.000000

Последние цифры впечатляют - ЭТО БАЙТКОД =D

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

на аккермане llvm "ноздря в ноздрю":

$ gcc -O3 -funroll-loops -finline-functions test2.c

$ ./a 3 13
l = 65533
15140

$ llvm-gcc -O3 -funroll-loops -finline-functions test2.c -emit-llvm -c -o test2.bc

$ opt -std-compile-opts -o test2opt.bc test2.bc

$ lli test2opt.bc 3 13
l = 65533
15172

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

> в linux всё нормально, но непонятно почему никто нормального аудиоплеера не написал.

А чем не угодил MOC/mocp? FLAC играет. Про другие форматы не слышал, и не знаю зачем одни нужны.

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

>Про другие форматы не слышал, и не знаю зачем одни нужны.

ОНИ УЖЕ ЕСТЬ!!! посвятить жизнь декодированию из других форматов в FLAC?

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

>ты наверное не слышишь разницы в звуке между mp3/ogg/aac(ac3, между aac и ac3 я тоже могу не услышать) и lossless?

Разницы между ogg с высоким битрейтом и lossless действительно не существует. Ты ее придумал.

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

Э.... так ведь никто не пишет desktop application на Java. "проекты поставляемые непосредственно заказчику - не в счёт".
Я не ругаю Java. Это часть моего бизнеса и причём не меньшая, чем mono/.Net или скриптовые языки. Просто я не сотворил себе кумира.

Я просто констатирую факт, что хотя "java подходит практически для всего" но плохо подходит для десктопа. Те приложения на Java, что я ипользую для разработки, оставляют желать лучшего, но к сожалению выбора нет.

Sun просрала desktop. Это для меня неоспоримый факт.
A mono/.Net прекрасно себя чуствуют на десктопе. Это для меня тоже факт.

ps
Вы будете потрясены, но mono/.net портировано под не меньшее количество платформ чем Java.

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

>А чем не угодил MOC/mocp?

мне не нужен консольный плеер. мне не нужен демон + управлялки к нему. мне не нужны монстры типа amarok. мне не нужны клоны winamp-а.

нужно: простой аудио плеер типа Apollo/foobar2000 - небольшой, с большим числом поддерживаемых форматов (встроено либо в качестве плагинов), не требующий пол гнома/kde для работы, не завязанный на уродских звуковых движках (ксайны/гстримеры и прочая хрень). почему небольшие аудиоплееры под windows этому удовлетворяют, а под linux как был бардак с плеерами, так и остался.

простая, стабильная, нежрущая лишние ресурсы программа c поддержкой плагинов на 1-2 мегабайт как в foobar2000 в windows? нет. будем и дальше плодить амароки.

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

>Вы будете потрясены, но mono/.net портировано под не меньшее количество платформ чем Java.

мало ли что портировано и из unix в windows. это ничего не говорит о том, что это возможно использовать.

что не так у java на десктопе - я не понимаю,

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

>Разницы между ogg с высоким битрейтом и lossless действительно не существует. Ты ее придумал.

я так и думал что ты не знаешь что ogg сливает даже aac (к сожалению, ибо aac проприетарен и активно протаскивается. если бы ogg vorbis давал лучший или аналогичный звук - был бы хоть какой то козырь, а так - проиграно проприетарщикам).

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

>что не так у java на десктопе - я не понимаю,
Если не понимете, то почему не используете?
Почему пишете письма из броузера ниписанного на C++ а не используете написанный на Java?(такие существеют)
Почему слушаете foobar написанный не на java? из Wine также написанном не на Java?
Почему вы не пользутесь программыми написанными на Java в быту(программирование оставим в стороне)?
Подумайте над этим. Може тогда поймёте что у Java на десктопе всё плохо.
Хотя может и не поймёте.
Но подумать всё равно советую.

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

>Я просто констатирую факт, что хотя "java подходит практически для всего" но плохо подходит для десктопа. Те приложения на Java, что я ипользую для разработки, оставляют желать лучшего, но к сожалению выбора нет.

Смешно. Java IDE лучшие в мире (VS в подмётки не годится IDEA и NetBeans), а приложений для десктопов не пишут... :)


>Sun просрала desktop. Это для меня неоспоримый факт.
>A mono/.Net прекрасно себя чуствуют на десктопе. Это для меня тоже факт.

Это факты для пользователя Paint.NET.

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

>Подумайте над этим. Може тогда поймёте что у Java на десктопе всё плохо.

А можно узнать что именно на десктопе плохо у джава? Особенон по сравнению с моно.

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

> ...Подумайте над этим. Може тогда поймёте что у Java на десктопе всё плохо.

На это фоне слова что у "mono с десктопом всё хорошо" выглядят _как минимум_ предвзятыми - не находите?

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

>>Разницы между ogg с высоким битрейтом и lossless действительно не существует. Ты ее придумал.

>я так и думал что ты не знаешь что ogg сливает даже aac

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

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

>Java SE 6 Update 10 Early Access Program: https://jdk6.dev.java.net/6u10ea.html — модульная Ява. Обезжиривается на ходу.

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

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

>>Подумайте над этим. Може тогда поймёте что у Java на десктопе всё плохо.

>А можно узнать что именно на десктопе плохо у джава?

Свинговые/Аяксовые рожи к БД на Жаве менее унылы чем аналогичное барахло на Дельфи из-за защищенной модели пямяти и массы качественных фреймворков от Апачей и Ко. Но несерверные программы общего назначения на Жаве я не люблю за аляповатость, тормоза и комбайновость. IDE не в счет - там комбайновость в плюс, а с аляповатостью/тормозами более-менее борются от релиза к релизу.

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

>Java IDE лучшие в мире
:)
Для Java. Сравините EPIC и Komodo.
меня раздражает некоторая задумчивость IDE на Java. В этом плане они "VS в подмётки не годятся". Хотя и выигрывают во многих других.

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

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

>Если не понимете, то почему не используете?

я использую лучшее, а не то что только на java.

почему я должен использовать нечто браузероподобное на java а не оперу? что за маньячество то?

>Може тогда поймёте что у Java на десктопе всё плохо.

бездоказательно. прог вообще хороших мало. многие C++ проги лучше сразу забыть/выкинуть/не использовать.

>Почему вы не пользутесь программыми написанными на Java в быту

Azureus, JEdit. есть другие проги на java, но я не использую не именно их, а просто не использую такие проги вообще.

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

>Аудиофильской хренотой

ты намерянно проигнорировал основную часть моего сообщения

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

Я лично пользусь ежедневно достаточным количеством приложений на mono/.net и ни одним(кроме средств программирования) Java.

Для меня это факт.

Если у вас наооборот. Расскажете, пожалуйста, какие программы на Java вы используете в быту(не программирование).
Потом подумайте почему.
Возможно и придёте к разумным выводам.
Но даже если не придёте, критическое мыхление - развивает.

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

> в linux всё нормально, но непонятно почему никто нормального аудиоплеера не написал.

Томми, был бы ты программистом, а не бы^W кодером на яве, за пару дней написал бы плеер, которого тебе так не хватает, и еще за недельку -- кучу плагинов к нему для lossless форматов. Все эти алгоритмы распаковки тоже почему-то сочиняются на С... видимо их авторы тоже не в курсе о глобальных преимуществах явы и предпочитают медленный и опасный С или С++...

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

> Расскажете, пожалуйста, какие программы на Java вы используете в быту(не программирование).

Это идея! Надо опрос такой создать -- сколько программ на яве вы используете как пользователь, а не как программист.

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

>слова что у "mono с десктопом всё хорошо"
Вы видимо ошиблись ответив мне, так как я не не нашёл вашей цитаты меня среди своих высказываений.

Вы видимо общались с кем-то из моего игнор-листа, так как я не нащёл такой цитаты во всё треде.

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

> Я лично пользусь ежедневно достаточным количеством приложений на mono/.net и ни одним(кроме средств программирования) Java.

Ну и зачем вы свой личный опыт натягиваете на весь мир как "гандон на глобус"?

P.S. Не использую "в повседневной жизни" ни java (среды и мелочь вроде обновления чего-то там не в счёт) ни mono/.net (при установке софта для принтера с CD .NET был установлен принудительно для неизвестных целей в составе прочего г. в количестве ~350 MB, после невозможности победить глюки вся эта хрень была снесене к "едреней фене" и установлены "голые" драйвера с сайта производителя размером архива в 7.5MB - глюков не наблюдается).

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

>>слова что у "mono с десктопом всё хорошо"

>Вы видимо ошиблись ответив мне, так как я не не нашёл вашей цитаты меня среди своих высказываений.

Это "вольный пересказ". "A mono/.Net прекрасно себя чуствуют на десктопе. Это для меня тоже факт." - не ваши слова? 8-О

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

>> Свинговые/Аяксовые рожи к БД на Жаве

>Аяксовые?

В вебе не силен. По моему такая фиговина чтобы сделать интерфейс как в gmail называется Аякс.

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

> В циклах слила Java, потому что у нее оказался оптимизатор послабее (что, впрочем, вполне поддается лечению).

Ява в бенчмарках на основе циклов не так уж сильно тормозит -- обычно не больше чем в 1.5, РЕДКО когда в 2 раза. Но в десктопных приложениях, которые я юзаю, тормоз где-то раз в 10-20 относительно С. Видимо, там все-таки мало горячих участков, которые удостаиваются hotspot-оптимизации.

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

> В вебе не силен. По моему такая фиговина чтобы сделать интерфейс как в gmail называется Аякс.

И к яве она отношения не имеет. За исключением того, что одна из реализация аякса (конкретно -- гуглевая) сделана как компилятор с явы в хтмл + ява-скрипт.

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

> Все эти алгоритмы распаковки тоже почему-то сочиняются на С... видимо их авторы тоже не в курсе о глобальных преимуществах явы и предпочитают медленный и опасный С или С++...

C - замечательный язык. А теперь показывайте аналог плеерам Apollo/foobar2000 под unix/линукс. foobar2000 я начал пользоваться ещё до того как узнал что под эту программу делают релизы на музыкальных сайтах и трекерах (я когда то пользовался плагинами под winamp программиста который потом написал foobar2000).

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

>почему я должен использовать нечто браузероподобное на java а не оперу? что за маньячество то?
Это я вам тонко намекаю, что "у Java всё плохо с десктопом".

А разве Opera и foobar на С написаны? Я думал на С++.
Плохую программу можно написать на чём угодно. Я сечас делаю damage control после 2-х поколений программистов на простеньким приложении на Java. Аффтар сбежал, когда ему сказали немножко поменять функиональность. Предыдущий сотрудник которому это передали сбежал в другое отделение банка в соседнем городе. Значит ли это что Java плохой язык программирования? Сразу скажу, что это худшее приложение виденное мною за всю мою проффесиональную карьеру.

Вы так и не сказали мне зачем вам JEdit в быту. Уж не в Tex ли резюме верстаете?

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

>C - замечательный язык. А теперь показывайте аналог плеерам Apollo/foobar2000 под unix/линукс. foobar2000 я начал пользоваться ещё до того как узнал что под эту программу делают релизы на музыкальных сайтах и трекерах (я когда то пользовался плагинами под winamp программиста который потом написал foobar2000).

А чего Вам кто-то должен что-то показывать? Это только у Вас вечные половые проблемы с линуксовыми плеерами. Кстати довольно неплохими. Завтра Вы упретесь, что-бы вам показали аналог ИЕ в Линуксе...

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