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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.