LINUX.ORG.RU

C vs. JVM's benchmark

 , ,


1

0

Стэфан Краузе в своём блоге
http://www.stefankrause.net/
опубликовал новые тесты производительности кода, написанного на C и на Java.

В тесте используются компилятор GCC 4.2.3 и различные версии JVM (Sun JDK 6, IBM JDK 6, Excelsior JET, Apache Harmony, BEA JRockit).

Тесты проводились на ноутбуке Dell Insprion 9400 с 2GB RAM и процессором Intel Core 2 2GHz под Ubuntu 8.04 (x86). Исходные коды прилагаются.

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

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

>Хуево поставленная задача. Это раз. А когда на жабе s + p делаешь, это разве не библиотечный вызов?

Во первых нет - не библиотечный. Во вторых так поставлена задача была не чтобы мне тут в glib2 ткнули - я не спрашивал как складывать строки на С, это просто демонстрация что в 21 веке народ на С долбиться над теми же проблемами что и 20 лет назад.

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

> А ниче что наш софт например на жабе конвертирует картинки внутри PDF печатного качества (сотни мегабайт) и при этом помещается в память выделенную апплету?

Оторванная от xpdf либа + imlib2 справится быстрее.

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

>JavaOS, Singularity - видел?

Может кто-то и видел. Давай поставим вопрос кто их _использовал_.

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

>Оторванная от xpdf либа + imlib2 справится быстрее.

Во первых не справиться - потому что функционала у нее не хватит. Во вторых мне под 10 платформ как на сервере так и в бровзере.

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

>> Это не ОС %)

> Или тут не jNode недавно постили?

JNode - это тоже не ОС, а игрушка. JavaOS (имеется в виду сановский проект второй половины 90-х?) тихо умерла. Singularity вообще не катит, потому что (цитирую по памяти) "Singularity использует Bartok, экспериментальный компилятор C# в машинный код".

Сейчас нет ОС на Яве для железа общего назначения. Может быть, когда-нибуть они появятся... но я скорее поставлю на что-нибудь типа Cyclone.

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

> потому что функционала у нее не хватит.

ЕМНИП, функционала у нее хватит чтобы выдрать контейнер с имиджем и скормить imlib'у (говорю только в свете оглашенной задачи). Во вторых мне под 10 платформ как на сервере так и в бровзере. Ээээ а кроме винды и POSIX-compatible ? (хушь убей по памяти не насчитал 10 осей),ну разве типа экзотики вроде java thin station.

iBliss
()

А матрица 10^6x10^6... она не великовата? 10^12 элементов, никаким параллелизмом не решить...

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

>JNode - это тоже не ОС, а игрушка.

Тем не менее игрушка вполне себе работает - просто у нее нет ниши в продакшене. Это не отменяет того что оно - операционная система.

r ★★★★★
()

Интересно знать, если Жаба такая шустрая, мож на ней переписать саму JVM, тогда производительность еще сильнее вырастет?? ;)

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

>ЕМНИП, функционала у нее хватит чтобы выдрать контейнер с имиджем и скормить imlib'у (говорю только в свете оглашенной задачи).

У нее хватит функционала для того чтобы разобратоь PDF для отображения в во вьевере для десктопной аппликухи читателю человеку. А не в press industry production quality. Во вторых алгоритмы imlib по трансформации цветовых пространств и т.д. - тоже не адоб.

>Ээээ а кроме винды и POSIX-compatible ? (хушь убей по памяти не насчитал 10 осей)

Дело не только в количестве - но и в версиях. Или ты уже готов скомпилить указанную связку под Solaris 2.2? :) А сколько на это времени надо чтобы портировать проект? А на жабке все взлетело без телодвижений вообще. Клиент доволен - все счастливы.

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

>но я скорее поставлю на что-нибудь типа Cyclone.

Всякие фортификации стека и кучи gcc давно умеет делать. Или я не понял фишку Цыклона?

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

Извините, но бред какой-то, про "GPU" и "проще". Вы их хоть раз обращали, матрицы? в "больших" приложениях это вообще задача не для "настольного" компьютера.

Ну возьмите какой-нибудь краш-тест с 60 миллионами степенями свободы,--- Вы его сможете сделать GPU?

SuperLU, например, http://crd.lbl.gov/~xiaoye/SuperLU/ лично Вы на GPU перепишите? Или знаете тех, кто сможет и кому это "проще"?

Никогда не говорите о вещах, которых не понимаете.

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

>>низкий уровень - Си, Асм.

>>веб - питон, ну и раби с рельсой

>>пользовательское ПО - питом(морда) + Си/Си++

>>зачем нам Жабка, она же нигде не эффективна ... >>phasma (*) (04.07.2008 13:28:34)

+1 ну наконец-то, нашелся хоть один вменяемый.

Представляю себе все десктопное окружение, начиная от текстовых редакторов, и заканчивая плеерами и графическими редакторами, кроме того сайты, браузеры, реализации системных утилит, реализации ДРУГИХ языков (и не только скриптовых) программирования на жабе (или они не нужны? на все же есть жаба?), средства 3D-моделирования, дальше по вкусу.

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

Сколько при 3D-моделировании?

Вообщем, желаю, что бы ваша мечта - "всюду ява" сбылась!

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

> алгоритмы imlib по трансформации цветовых пространств и т.д. - тоже не адоб.

А жаба адобовские либы пользует ?

> Или ты уже готов скомпилить указанную связку под Solaris 2.2

Не приведи господь (хотя с открытием солярки может и не все так страшно).

> А сколько на это времени надо чтобы портировать проект?

Именно такой как я описал 2-3 6дневки фуллтайм.

> Клиент доволен - все счастливы.

Ну тут конечно таки да. "Руление А версус Б" штука ситуационная.

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

>Вы думаете, что в компиляторе поддержка хеш-таблиц реализована не ручками? :) Ещё раз повторю, в glib есть очень хорошая реализация хеш-таблиц, ручками делать ничего не надо. Surprise?

Не надо так толсто троллить, я прекрасно знаю как делается поддержка разных структур в языке. А вот компилировать и поддерживать такую программу использующую glib для win32, AIX, HP-UX, Solaris будет очень весело.

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

>Это не оптимизация. + это синтаксический сахар, означающий именно эту конструкцию, AFAIR это даже в стандарте прописано.

Неа, в стандарте описан именно синтаксический сахар без раскрытия способа реализации.

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

>+1 ну наконец-то, нашелся хоть один вменяемый.

У которого мир ограничен ядром форумом и бровзером.

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

Ты знаешь что жабьи приложения по факту не имеют на данный момент инфраструктуры запуска которая ей нужна? И по факту любое приложение на жабе запускается так как буждто оно слинковано статически со всей жабой. При нормальной инфраструктуре запуска приложений оно и близко не будет потреблять такие ресурсы по памяти.  

И какие это "такие" ?

Такие?

 347m 122m  29m R    3  6.5  12:30.06 /usr/lib/seamonkey/seamonkey-bin
 242m 134m  19m S    0  7.1  11:14.66 skype 
 86776  31m  21m S    0  1.7   0:51.66 kopete
 50096  28m  14m S    0  1.5   0:59.20 kicker
 40912  24m  11m R    0  1.3   0:29.00 konsole 
 167m   16m  11m S    0  0.9   0:02.15 qstardict
 75828  16m  10m S    0  0.9   0:01.08 /usr/bin/python /usr/bin/fusion-icon 

Или какие? 

Хватит лохматить бабушку. Сейчас инстант мессенждер жрет больше  памяти чем было на моем компе в 99 году на котором работала жаба и запускалось E14.

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

> А матрица 10^6x10^6... она не великовата? 10^12 элементов, никаким параллелизмом не решить...

есть достаточно много задач, где такая проблема стоит и онa тем или иным
способом решаeтся. Более того, goolge ежемесячно вращает матрицы
размером 10^11 x 10^11 (Сержа Брин придумал, как это делать - и стал
миллиардером), правда без параллелизмa.

Реально, мы стоим на рубеже.
Как только вращение матриц размером 0^6x10^6 станет "обычным делом" -
наступит новая эпоха (через 1-2 года), в том числе и для языков.
Думаю, что C/C++, в том или ином виде останется основным языком
программирования. Так что, закапывайте копья ...

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

>А жаба адобовские либы пользует ?

Нет - алгоритмы реализованы руками.

>Именно такой как я описал 2-3 6дневки фуллтайм.

На соляру 93 года? При чем чужую - которую тебе перепахать не дадут. Ты уверен?

И сравни это с 0выми затратами на жабу (у тебе еще надо будет гдето взять соответсвенное железо и OS). И учитывай что он не обязательно купит - то есть твой месяц работы + расходы может быть минусовым. А таких ходов много - вылезают разные клиенты с древними айриксами и тд - всем портировать? Или ты обяснишь клиенту что он свои 64 процессора с теробайтами хранилищь и десятками гигов RAM мождет выкинуть? А как на счет масштабирования на все эти процессоры?

ТАк что не так все просто.

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

> 242m 134m  19m S    0  7.1  11:14.66 skype 
> 347m 122m  29m R    3  6.5  12:30.06 /usr/lib/seamonkey/seamonkey-bin

o_0!!!

  952 phasma        1  96    0 42376K 38184K select   0:52  4.54% python2.5
  917 phasma        1  96    0 43836K 34628K select   6:08  2.54% Xorg
38265 phasma        1 100    0  5768K  4760K select   0:00  1.54% xterm
38269 phasma        1   8    0  3284K  2208K wait     0:00  1.00% bash
  958 phasma        5  20    0 29104K 25332K kserel  10:14  0.00% xmms
  940 phasma        3  20    0   102M 97088K kserel   7:39  0.00% opera
11098 phasma        1  96    0  6744K  5684K select   0:33  0.00% xterm
11114 phasma        1  96    0  4132K  3620K select   0:17  0.00% ssh
  441 root          1  96    0  1436K   884K select   0:11  0.00% moused
  927 phasma        1 113    0  2528K  2028K select   0:07  0.00% dwm

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

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

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

>> Apache Tomcat. Написан на Java. :P

>незачот! во-первых - это apache модуль, написанный на C

>Valeriy_Onuchin * (*) (04.07.2008 11:01:58)

Аффтар пеши исчо!!!

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

> ...Язык этот был придуман в недрах Эриксона для массового паралеллизма ....

Насчёт что и где было придумано, очень интересно сравинить erlang и prolog хрен знает какого года выпуска. :-D

alx_me ★★☆
()
Ответ на: комментарий от A-234

вот эти слова, что я искал. :-)

а то самому опять пришлось бы язвить.

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

> Всякие фортификации стека и кучи gcc давно умеет делать. Или я не понял фишку Цыклона?

Ты ее не понял (а фортификация стека так и вообще ни при чем). Фишка - в статических проверках. И, кстати, в шаблонах :D

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

Дело в том, что через 10 лет процессоры будут складываться с 128 ядер и более. Писать для них современным образом не представляется возможным. И уж точно никто не будет для них писать теми убогими средствами, которыми все пользуются сейчас. Закапывай свой C/C++ пора смотреть на эрланг и огромную виртуальную машину, в которой любой вызов функции может быть параллельным.

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

>> достаточно давно ~2002 года

>мда, старею. tomcat - это "оказывается" не модуль, а сервлет (!) >что суть дела не меняет - висит-то он на апаче, который написан на C

КГ/АМ Tomcat - web-container (по определениям среди Java-dev.) Висеть он не должен. Тем более apache ему нах не сдался для работы.

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

>> Вообще-то Томкат-это автономное приложение на Жаве. Есть еще Jetty. http://svn.apache.org/repos/asf/tomcat/connectors/trunk/jk/native/apache-2.0/.. . > "Apache 2 plugin for Tomcat" - что есть aka apache-module вся основная нагрузке лежит здесь. >Остальные java-довески - это "performance non-critical" функциональные части. Курите сорцы!

Это модуль работающий типа прокси. Для самого tomcat он не нужен.

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

>> Собственно как раз для этого C и предназначен - прослойка между кодом и железом (Java -> C -> GPU) :) :) :)

> чем же тогда будет быстрее Жабка, и чем она лучше, если Си служит "прослойкой" ?

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

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

>> JNode - это тоже не ОС, а игрушка.

> Тем не менее игрушка вполне себе работает - просто у нее нет ниши в продакшене.

Это и называется "игрушка" - ее никто не применяет. Когда начнут применять - полезут проблемы, закон Райзера никто не отменял. Кстати, из описания на сайте - это ни разу не ОС, это, скорее, JVM для голого железа. По крайней мере, я не нашел заявлений о POSIX- или Линукс-совместимости.

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

> Тем более apache ему нах не сдался для работы.

тема закрыта: mod_perl, mod_tcl, "mod_python", mod_php
(когда-то я написал mod_c++, который позволял исполнять
C++ скрипты на apache, a la tomcat | php) - все это контейнеры
для соответствующих языков , и им apache нах не сдался для работы

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

> Закапывай свой C/C++ пора смотреть на эрланг и огромную виртуальную машину, в которой любой вызов функции может быть параллельным.

неужели, вы, продвинутые гуру кодеры будушего напишите саму VM на эрланге или джаве ?

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

> Дело в том, что через 10 лет процессоры будут складываться с 128 ядер и более.

Верни на место машину времени и сходи в библиотеку - ровно то же самое говорили 20 лет назад.

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

> программируется быстрее, дебажится проще. В итоге быстрее и дешевле создается "большое" приложение.

а после добавления еще одной "фичи" на машину поставят еще 16 Гб оперативы, что бы не тормозило.

phasma ★☆
()
Ответ на: комментарий от A-234

>Такой подход позволяет нанимать дешевую, мало квалифицированную рабочую силу и получать работающий результат.

4.2

Вся инженерная и исследовательская деятельность направлена на то чтобы упрощать решение существующих задач, удешевлять производство и т.д.

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

А вы пытаетесь оправдайть свой геморой высокой квалификацией для осуществления этого гемороя. Не выйдет - фига с 2.

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

Нет аналогичных проектов которые можно сравнивать. Если сравнить большие десктопные аппликейшены - например IDE - то альтернативные варианты по функционалу и рядом не валялись. Догадайтесь почему. Потому что там наорд озабочен "сложением стрингов", а не целевой задачей.

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

>> Всякие фортификации стека и кучи gcc давно умеет делать. Или я не понял фишку Цыклона?

>Ты ее не понял (а фортификация стека так и вообще ни при чем).

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

>Фишка - в статических проверках.

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

>И, кстати, в шаблонах :D

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

Absurd ★★★
()
Ответ на: SuperLU от Valeriy_Onuchin

Трилиносом особо не пользовался, так что сравнить не могу, но понравилось тем, что маленькое и вещь в себе. В Трилиносе, кстати, есть интерфейс для SuperLU:

http://trilinos.sandia.gov/packages/amesos/superlu_install.html

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

>Это и называется "игрушка" - ее никто не применяет.

Однако эта игрушка посложнее и покруче того на чем Гейтс начал делать деньги и которое называлось операционной системой.

>По крайней мере, я не нашел заявлений о POSIX- или Линукс-совместимости.

Естественно. И не найдешь - посикс совместимость это совместимость по "набору сишных функций". Это бессмыссленно.

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

>для соответствующих языков , и им apache нах не сдался для работы

Это ж надо так настаивать на совей безграмотности.

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

> Однако эта игрушка посложнее и покруче того на чем Гейтс начал делать деньги и которое называлось операционной системой.

однако подобные вещи, вроде Inferno где-то еще пытаются запустить, а это даже и трогать никто не хочет ...

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

>однако подобные вещи, вроде Inferno где-то еще пытаются запустить, а это даже и трогать никто не хочет ...

Ты себя ассоциируешь с никто ? Хватит расписываться за всех. Это операционная система. Игрушечность ее не отменяет этого факта.

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

>> Тем более apache ему нах не сдался для работы.

>тема закрыта: mod_perl, mod_tcl, "mod_python", mod_php (когда-то я написал mod_c++, который позволял исполнять C++ скрипты на apache, a la tomcat | php) - все это контейнеры для соответствующих языков , и им apache нах не сдался для работы

низачет пока ваш mod_c++ или mod_perl не сможет работать и отдавать результат по http(s) при полном отсутствии apache. Tomcat - может. Удачи в изучении новых технологий ;)

VoDA ★★
()
Ответ на: SuperLU от Valeriy_Onuchin

Да, если по делу -- совсем больших задач SuperLU я не решал; для того, что делал (неоднородная упругость, порядка пол миллиона уравнений) работало хорошо.

gene
()
Ответ на: комментарий от A-234

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

Люди больше 20 пишут на всяких лиспах и перлах, никаких концептуальных ошибок в проектировании замечено не было. Может ты этого не знаешь, но компилятор лиспа дает более производительный код чем С, особенно на сложных и больших участках кода, в качестве примера - регулярные выражения.

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

> эта игрушка посложнее и покруче того на чем Гейтс начал делать деньги и которое называлось операционной системой.

Да. Но с тех пор изменились времена и технологии.

>> По крайней мере, я не нашел заявлений о POSIX- или Линукс-совместимости.

> Естественно

Нет в этом ничего естественного. Любая современная ОС общего назначения поддерживает несколько ABI "родного кода".

> посикс совместимость это совместимость по "набору сишных функций". Это бессмыссленно.

А Линукс-совместимость - это набор системных вызовов. Тоже бессмысленно? А Sun и FreeBSD и не знают...

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

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

Там помимо этого делается очень много чего.

>>Фишка - в статических проверках.

>Поведение программы определяется теми данными которые поступают им на вход. Статика не позволяет вычислять тот континум входных данных, которые сломают логику программ

Ужос какой. Значит, мы все умрем, да?

http://cyclone.thelanguage.org/ - там всё понятно изложено.

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