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). Исходные коды прилагаются.

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

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

>? Он как раз не может их различить в вызове f(0).

gcc (GCC) 4.2.1 (SUSE Linux) Copyright (C) 2007 Free Software Foundation, Inc.

различает. Вызывется первая. Если специфицировать шаблон - вызывается вторая.

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

> различает. Вызывется первая.

Имеется в виду - если оставить всего 2, а не как у Легионера? Тогда Absurd прав, там отдается предпочтение не-шаблонной функции.

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

Во, это понимаю, задачка :) Я из головы написал, но для меня это самая запутанная часть С++ - разрешение перегруженных функций.

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

>Не парься на эту тему - от плюсовых шаблонов больше кариеса чем выгоды.

Та да - но интересно же:)

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

>Не парься на эту тему - от плюсовых шаблонов больше кариеса чем выгоды.

+1

"А еще - червяком! земдяным червяком" (с) Багира/Киплинг(? или это уже в нашем мултике добавили?) :)

А ещё множественное наследование!

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

#include<iostream>

using namespace std;

void f(int * x) {
    cout << 1 << endl;
}
void f(double * x) {
    cout << 2 << endl;
}
template <typename T> void f(T t) {
    cout << 3 << endl;
}

template <typename T> void f(T* t){
    cout << 4 << endl;
}
template <typename T> void f(const T& t){
    cout << 5 << endl;
}

int main(void) {
    f((int*)0);
    f((double*)0);
    f<int>((int*)0);
    return 1;
}

output:
1
2
4


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

> Это не важно - твоя функция подчиняется сигнатуре -command для tk - а эта сигнатура ему известна. Конкретная функция значения не имеет.

Это не так. -command -- это широкораспространённый, но не общепринятый вид указания callback-а. И в зависимости от места использования аргументов может быть не 1, а 0 или сколько угодно.

> и понимать что в случае -command в tk - это функция с одним параметром widget.

не стыкуется с предметной областью.

> Посмотри хоть на zsh - там во весь рост использован этот подход.

Посмотрю на досуге.

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

> А DLTK ты смотрел?

Нет. Надо посмотреть.

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

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

Какие-то ты страхи рассказываешь. Или это опять панический страх двеей, охотящихся на яйца?

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

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

Кстати, про маньяка-кодофила: такие люди ну очень любят пренебрегать константами и дёргать что-то по имени. Так что сложно при работе с таким кодом надеяться на то, что инструмент эту херь нормально обработает, не поломав.

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

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

>>>Какие-то ты страхи рассказываешь. Или это опять панический страх двеей, охотящихся на яйца?

>> Хз. Я бы такую перегрузку делал с целью сознательного вандализма против с++ - проекта. Кстати, это идея.

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

Дело тут не в отстреливании яиц.... итд

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

>> Дело тут не в отстреливании яиц.... итд

>Дело в http://www.linux.org.ru/jump-message.jsp?msgid=2893758&cid=2897880 ? ;)

Да тут можно и не подтасовывать. Разве iostream где используется перегруженный operator<< видимо для сдвига битов в стриме влево - хорошая библиотека? Она может отвратно форматировать текст. И еще более отвратно его парсить. BTW каким боком относится парсинг текста к вводу-выводу совершенно не понятно.

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

> Да тут можно и не подтасовывать. Разве iostream где используется перегруженный operator<< видимо для сдвига битов в стриме влево - хорошая библиотека?

Твоё мнение о сиплюсплюсе известно, мог не утруждаться повторять.

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

> Кстати что р невменяем это все давно поняли.

Нет. Все поняли, что ты баран. А r, tailgunner и Sun-ch возможно самые интересные люди на этом ресурсе.

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

>> Кстати что р невменяем это все давно поняли.

> А r, tailgunner и Sun-ch возможно самые интересные люди на этом ресурсе.

Дыкть, одно другому не мешает...

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

> А r, tailgunner и Sun-ch возможно самые интересные люди на этом ресурсе.

Таки это ви в каждом топике признаётесь в любви к r?

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

>>>Мега-Веб-сервер от Сана, работает в 10 раз быстрее, чем второй апач и Tomcat.

>> Ой, блин, а хостеры то не знают...

> Они знают. Пользуйся гуглом.

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

Сходи на http://survey.netcraft.com/Reports/200806/

Чудо Техники От Великого Сана занимает меньше чем 0.5% от апача (кстати, которое из чудес? если это Sun Enterprise, то 0.2%)

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

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

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

Двойные фигурные скобки -- тоже некоторое уродство, но жить можно.

Например:

class Button { String text; Command onPress; ... }

Button b = new Button() {{

text = "my label";
onPress = new Command() {{ void run(){ showMessageBox("I am pressed!");} }}

}}

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

И к тебе вопрос -- как бы ты оценил такой синтаксис того, что я написал:

Button=Сlass: text=String on_press=Command

b=button: text:(my label) on_press:command:show_message_box(I am pressed!)

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

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

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

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

> Аплеты прекрасно работают в той же энтерпрайз сфере. Никакой джаваскрипт вам не даст банально открыть файл.

Ты опять не в теме. Я даже писал апликуху на ява-скрипте под Нетскейп 4, читавшую файлы (ну так заказчик захотел... я тут не при чем). Ява-скрипт мозилы позволяет открывать файлы, и видимо это даже можно сделать из ява-скрипта страницы, запросив права.

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

>Ок. вроде ранmit у борлонда был ключик который заставлял приложение вызывать все функции, даже если результат if уже известен. поскольку найти доку не смог и гугл не помог, то задача снимается ;)

http://www.tspu.tula.ru/ivt/old_site/umr/delphi/delphi_help/D5ophlp2_web/57.html

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

>Хватит нагло врать.

http://www.google.com/search?q=java+hosting

Так что не знают хостеры про джаву?

>Чудо Техники От Великого Сана занимает меньше чем 0.5% от апача (кстати, которое из чудес? если это Sun Enterprise, то 0.2%)

Sun Sun-ONE-Web-Server 349,704 Apache Coyote 338,376 Resin Resin 321,746 Jetty Jetty 259,558 Lotus Lotus-Domino 85,025

Это во первых.

Во вторых: http://toolbar.netcraft.com/site_report?url=http://www.linux.org.ru

Объяснишь? Это во вторых.

А в третьих почтай как идентифицируют себя апач/томкет разных версий. Почему я их тут не вижу вообще? Потому что они квалаифцированы как Apache?

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

>Ява-скрипт мозилы позволяет открывать файлы, и видимо это даже можно сделать из ява-скрипта страницы, запросив права.

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

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

>Так что не знают хостеры про джаву?

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

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

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

Ты говорил о мега-веб-сервер от санок:

>>>Мега-Веб-сервер от Сана, работает в 10 раз быстрее, чем второй апач и Tomcat.

>> Ой, блин, а хостеры то не знают... [это не мое]

> Они знают. Пользуйся гуглом.

Я не понимаю, как http://www.google.com/search?q=java+hosting (0.5М результатов) доказывает существование этого Чудо Веб Сервера От Великого Сана.

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

> Гаа, освой что-ли яву, там все это делается типобезопасно и с комплешеном (без рефлекшена).

Ява невыразительна и слишком строга.

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

Пара страниц флейма была только в подтверждение тезиса "Крутые Явовские IDE удобны только для явы". Причём выяснилось, что и с явой-то эти крутые кодоутилиты споткнуться могут.

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

> И к тебе вопрос -- как бы ты оценил такой синтаксис того, что я написал:

Синтаксис как синтаксис. Ничего экстраординарного.

> Button=Сlass: text=String on_press=Command

> b=button: text:(my label) on_press:command:show_message_box(I am pressed!)

Полный аналог того же на tcl+tk. Даже слова и порядок записи почти все те же :)

button .b -text {my label} -command {tk_messageBox {I am pressed!}}

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

>Ты говорил о мега-веб-сервер от санок:

Нет - я говорил о яве. Мегавебсервер привел саныч в ответ на это замечание:

>>> >Ограничена ява. Какие задачи, выполнение которых возможно осуществить на яве невозможно выполнить на Си?

>>Мега-Веб-сервер от Сана, работает в 10 раз быстрее, чем второй апач и Tomcat.

> Ой, блин, а хостеры то не знают... лепять везде апач да ngnix,

>Я не понимаю, как http://www.google.com/search?q=java+hosting (0.5М результатов) доказывает существование этого Чудо Веб Сервера От Великого Сана.

Это показывает что хостинг на жабе - сушествует и распространен а не "лепят везде апач да nginx".

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

>Пара страниц флейма была только в подтверждение тезиса "Крутые Явовские IDE удобны только для явы". Причём выяснилось, что и с явой-то эти крутые кодоутилиты споткнуться могут.

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

Только не на С/++.

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

>Следующий пример: if(func1() && func2()) - будет ли вызвана func2()? всегда ли?

Если func1() вернёт true, то будет вызвана, в противном случае - нет.

>и можно ли гарантировать это поведение (любое однозначное поведение)?

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

Вообще такие вещи известны даже самому последнему плюсатому ламеру, кого вы этим удивить-то хотели? К слову, в баш-скриптах такое поведение уже давно используется для организации аналога try-catch-finally.

// AX

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

>Если func1() вернёт true, то будет вызвана, в противном случае - нет.

Усложняем: f(f1() && f2()) и делаем язык ленивым - подпишешься что f1 f1 вообще вызовется?;)

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

> А еще выяснилось что эти есть не потому что жава такой "подходящий" язык - потому что неподходящестей и там есть - и следовательно такие же крутые IDE могут быть написаны для других языков.

Может пойдём дальше и найдём тот язык, для которого подобная Крутая IDE может быть написана безо всяких снижений общности? Basic? :)

> Только не на С/++.

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

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

> Полный аналог того же на . Даже слова и порядок записи почти все те же :)

В отличие от tcl+tk он ТИПОБЕЗОПАСНЫЙ. Перешел бы с tcl+tk на такое? И что еще надо?

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

> Это показывает что хостинг на жабе - сушествует и распространен а не "лепят везде апач да nginx".

Стать мне что ли евангелистом брейнфака... а че -- вон ведь евангелисты есть даже у явы...

К-во результатов Запрос
10.3M http://www.google.com/search?q=php+hosting
06.1M http://www.google.com/search?q=ipb+hosting
00.8M http://www.google.com/search?q=phpbb+hosting
00.7M http://www.google.com/search?q=java+hosting
00.7M http://www.google.com/search?q=python+hosting
00.5M http://www.google.com/search?q=perl+hosting
00.4M http://www.google.com/search?q=ruby+hosting
00.3M http://www.google.com/search?q=zope+hosting
00.2M http://www.google.com/search?q=tomcat+hosting


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

>> Полный аналог того же на . Даже слова и порядок записи почти все те же :)

> В отличие от tcl+tk он ТИПОБЕЗОПАСНЫЙ.

Это хорошо. Только хотелось бы видеть, от чего ради этого придётся отказаться. Сходу всплывает отказ от "чистого" eval.

А оно уже как-то называется или это только задумка?

> Перешел бы с tcl+tk на такое?

Возможно. В любом случае надо в деле пробовать.

> И что еще надо?

Надо не потерять то, что уже есть :) А вообще, понять, что потеряно можно только понабрав опыта и шишек.

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

> То есть нашелся один тот самый который признал - что даже сложение строк на С - ебля мозга:)

ну это как проинтерпретировать :) я писал выше, вроде, складывать числа как-то логично, а строки логичнее сращивать, что ли. Может авторы языка были того же мнения? В конце концов, наверное С больше отражение, мммм... POSIX - "выкидывать все, пока работает", а ява - WinAPI - "на любой чих пихать функцию API". хз. В любом случае работа для двух языков ещё долго будет.

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

> Все это замечательно. Только 21 век на дворе.

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

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

> arm-linux-gcc -O0 - 1 2 3, -O3 3 3 3

Debian Lenny, gcc version 4.1.3 20080420 (prerelease) (Debian 4.1.2-22):

во всех случаях дал 3 3 3

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

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

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

ещё раньше, на другой работе, там билд-сервера на солярке были (не опен), там тоже себе ставил в окружение glib - некоторый функционал делал, для облегчения рутинных операций. прогу писал на Linux в основном дома, там просто собирал.

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

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

> это просто демонстрация что в 21 веке народ на С долбиться над теми же проблемами что и 20 лет назад.

кому нужно, тот уже готовый функционал использует, который за эти 20 лет уже наработан :)

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

>Может пойдём дальше и найдём тот язык, для которого подобная Крутая IDE может быть написана безо всяких снижений общности? Basic? :)

К стати отличный пример того что не всме дело в языке для которого пишут - но и в языке на котором пишут.

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

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

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

>К-во результатов Запрос

Да конечно. Только о чем это говорит? Или ты готов поставить на то что на пыхе и на жаве как классе статистически пишутся одинакового рода системы?

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