LINUX.ORG.RU

Производительность Java, C и C++

 , , ,


4

6

Предположим я не тролль, а правда знаю C, C++ и Java.

Java умеет оптимизировать «горячий путь», т.е. в среднем должна быть быстрее на этом пути, чем программы на C или C++. С другой стороны при отклонении от этого «горячего пути» начинаются тормоза.

В большинстве случаев в интерпрайзе(вэб/промышленное ПО) применение java оправдано(там где регулярно выполняется всего 10 основных действий). Т.к. порог вхождения у java ниже - можно найти больше программистов, следовательно дешевле разработка.

Вопрос: чем вызвано массовое увлечение написанием десктопного ПО на java, ведь явного «горячего пути» в десктопных ПО обычно не существует?

ЗЫ программисты на Qt, а не на C++ проходите мимо, вопрос к людям постарше.


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

Собственно, я не один год сидел на 3.5, и плазма у меня падала, да, но стабильные версии KDE всегда нормально работали, кст. тут ещё много от дистра зависит.

flyshoot ★
()

Ага, яву выбирают именно за оптимизацию горячего пути.

ЗЫ А зачем нам два анонiмуса одновременно? Этот еще и пьян.

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

Во! Спасибо, что напомнил. Действительно, если бы на ZN5 или в Droid 1 были иксы, то тормозило бы всё ещё больше, как на N900 или N9:

https://www.youtube.com/watch?v=L1--OW4j0Pw

Кстати, JVM на Motorola ZN5 была отличная — ещё Sun'овский kvm оптимизированный под технологию Jazelle. Так что J2ME-приложения, даже с 3D, на ней летали.

А вообще не мешай мне мазать жиром кормить анонiмуса >:)

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

Лол. Даже не стараетесь. Тоньше надо быть, тоньше.

RazrFalcon ★★★★★
()

Мало кто знает, но для C, C++ тоже есть «горячий путь», profile-guided optimization называется.

O02eg ★★★★★
()

Вопрос: чем вызвано массовое увлечение написанием десктопного ПО на java, ведь явного «горячего пути» в десктопных ПО обычно не существует?

Большим кол-вом программистов на Java оно вызвано.

Если коммерческое ПО - есть прогеры на Java и их надо продавать. Продали, как видишь.

Если Open Source - чувакам по кайфу писать на Java вот и написали, т.к. умели и ну нафиг учить что-то новое.

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

а тут уже генератор кода.

как же вы удивитесь, узнав что многие библиотеки помимо qt используют кодогенерацию, но никто в здравом уме не называет их «надстройкой»

впрочем, здравый смысл видимо не про вас)

anonymous
()

Давно не видел на десктопе java программ, кроме крупных, профессиональных, узкоспециализированных.

flyshoot ★
()

Анонимус имел

половые отношения с COMSOL. Забавная штука. Движок на жабе, а фронтенд под жабу, веб и дотнет на венде.

anonymous
()

Производительность Java напрямую зависит от её масштабируемости. Дай больше ресурсов JVM - она больше использует и повысит эффективность. В отличие от C/C++.

Далее, часто используемые функции в Java написаны нативно, в результате чего скорость выполнения определённых операций над массивами, например, равна C++.

Честно говоря, не совсем понимаю, откуда растёт мнение про «тормознутость» Java. Вот «жручесть» - это да, ресурсы используются на ура.

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

аналогично

кроме IDE могу добавить Gambler, пару эмулей узкоспецифических
ну может еще 2-3 игры
еще свежачок (или труп) скоро занесут в виде PlayOnLinux 5

anTaRes ★★★★
()
Ответ на: комментарий от I-Love-Microsoft

лорчую это грамотное мнение

Надо бы только понять, альтернативу Qt в какой именно нише. Если GUI, то резонный вопрос «нафиг надо?» (как инструмент для GUI Qt далеко не всем нравится, откуда и появляются imgui/nana).

Если про какой-нибудь сервер-сайд или middleware, то здесь ситуация совсем другая и непонятно, нафига туда вообще нужно тянуть Qt.

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

Если GUI, то резонный вопрос «нафиг надо?»

Ну оно работает везде (включая всякие андроиды) и выглядит не так вырвиглазно. Умеет в фреймбуфер, например. Одно время на Qt делали автомат музыкальный с малиной. Потом делал управлялку на той же малине с дисплеем 320 на 240, опять ж на Qt. Работало просто отлично.

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

Ну оно работает везде (включая всякие андроиды) и выглядит не так вырвиглазно. Умеет в фреймбуфер, например. Одно время на Qt делали автомат музыкальный с малиной. Потом делал управлялку на той же малине с дисплеем 320 на 240, опять ж на Qt. Работало просто отлично.

Вы меня не поняли. Мне самому интересно, в каких случаях в нише GUI нужна альтернатива Qt.

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

А чего вырвиглазно так? Оно под общий стиль косить умеет?

Задайте этот вопрос авторам данных фремворков. Я так понимаю, что им нужны были легковесные инструменты для однократных разработок из категории «на выброс».

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

не, давай уже расскажи что да как.

вот код: он неправильный? если правильный, то с++ный компилятор его съест? ну программы на с++ он ест ведь, а как с этим будет?

я вроде ничего сложного не спрашиваю.

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

Дай больше ресурсов JVM - она больше использует и повысит эффективность.

воистину. на 32гб гц отрабатывает 10 минут.

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

Эм.... а на чём её запускать....

Там была небольшая прослойка на C для запуска и прочего:
https://community.oracle.com/docs/DOC-917502

Увы, оно создало было для академических целей (различные масштабируемые эксперименты с VM) и на сегодняшний момент протухло.

А где-нибудь ещё jazelle/thumbee используются?

Из того что я видел глазами и щупал руками — только устройства на MotoMAGX, возможно еще в телефонах Sony Ericsson использовалась, Java там быстрая была. В остальных девайсах, вроде GP2X Caanoo, этот Jazelle висел мёртвым грузом. Про Thumbee ничего не скажу, он (вроде) пришёл позже, когда я уже перестал интересоваться этой темой.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от anonymous

Нет, я исхожу из того, что программу на С++ можно скомпилировать компилятором С++. Программу на Qt компилятор с++ не берет, потому что там появились некоторые добавления в язык.

что касается «кодогенератора», то когда-то С++ кодогенерировался в си, может быть из этого следует, что С++ это Си и «просто библиотека» + «просто кодогенератор»?

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

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

И каким же компилятором нужно компилировать программу на Qt?

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

Программу на Qt компилятор с++ не берет

феерический идиот :) либо жирный тролль

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

Планируется — громко сказано. Скорее, «возможно в Qt 6 отпилят MOC». В рассылке разработчиков наблюдаются подобные эксперименты, но однозначно сказать нельзя.

EXL ★★★★★
()

Сравнение теплого с мягким. Они вообще по разному работают

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

Нет, я исхожу из того, что программу на С++ можно скомпилировать компилятором С++. Программу на Qt компилятор с++ не берет, потому что там появились некоторые добавления в язык.
что касается «кодогенератора», то когда-то С++ кодогенерировался в си, может быть из этого следует, что С++ это Си и «просто библиотека» + «просто кодогенератор»?

забрал это сообщение в свою коллекцию неадеквата)

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

Производительность Java напрямую зависит от её масштабируемости. Дай больше ресурсов JVM - она больше использует и повысит эффективность. В отличие от C/C++.

ну это старая песня, «дайте нам ресурсов, а там уж мы ух!»

Далее, часто используемые функции в Java написаны нативно, в результате чего скорость выполнения определённых операций над массивами, например, равна C++.

теже самые операции чуть медленнее, другое дело что в стандартных контейнерах Java есть оптимизация части операций «из коробки», например преаллокация с запасом, которую в stl надо делать руками

Честно говоря, не совсем понимаю, откуда растёт мнение про «тормознутость» Java. Вот «жручесть» - это да, ресурсы используются на ура.

из жизни :) но на «горячем пути» java правда может быть быстрее

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

Мало кто знает, но для C, C++ тоже есть «горячий путь», profile-guided optimization называется.

все-таки это «ручной» метод, в java же все из коробки, и если «горячий путь» поменялся, то в C и C++ надо опять профайлером шариться, java же все сделает сама.

другое дело что при отсутствии этого пути у java скорость падает совсем неприлично

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

Пока C++'ники бегают и отлавливают сегфолты в той функциональности, которую реализовали

Java'ники уже ломают ранее сделаные плюшки

Починил (эклипц яркий пример)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от EXL

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

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от rusich

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

/0

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

" moc is a preprocessor that changes Q_OBJECT macro instances to C++ source code to enable meta object system mechanism "

https://en.wikipedia.org/wiki/Meta-object_System

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

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

Честно говоря, не совсем понимаю, откуда растёт мнение про «тормознутость» Java. Вот «жручесть» - это да, ресурсы используются на ура.

Из-за того, что Java машина не заточена под десктоп. Если бы она запускалась в виде демона, а потом при запуске Java программ начинала бы их исполнять было бы одно дело, а так каждая Java программа тянет перед своим запуском ещё один жирнючий процесс Java со всем необходимым.

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

Обзывает других школьниками, а сам даёт ссылку на википедию. /0

https://doc.qt.io/qt-5/moc.html

Так вот moc генерирует отдельный файл, _moc.cpp, для каждого файла с Q_OBJECT. Исходный файл он никаким образом не изменяет.

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

Так вот moc генерирует отдельный файл, _moc.cpp, для каждого файла с Q_OBJECT. Исходный файл он никаким образом не

ну вот видишь) можешь же не тупить) молодец, осознал что moc - это всего лишь кодогенератор)

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

Жаль ты не перестаёшь тупить. Ведь это ты в начале темы топил за то, что Qt - это просто либа. Теперь это «всего лишь кодогенератор».

Что дальше? Наконец-то забанишься?

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

Жаль ты не перестаёшь тупить. Ведь это ты в начале темы топил за то, что Qt - это просто либа. Теперь это «всего лишь кодогенератор».

да, так и есть, Qt - либа с кодогенератором, но тебе не понять)

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