Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Java медленнее C в 25 раз!!!  (Прочитано 28461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zeus

  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #30 : 18 Июль 2006, 23:22:55 »
iZEN
во ты выдал ща.

т.е. компилсцис+оптимизацис+выполнение в реальном времени будут быстрее чем выполнение?
никто не спорит что при требовании сверхскоростных вычислений софтину на C++ придеца перекомпилить с учетом железа. НО выполнение бинарника написанного на C++ и скомпилированного под i386 будет БЫСТРЕЕ чем оптимизацис+компилсцис+выполнение на жабе под 686.

жаба не может работать со скоростью ассемблерного кода. физически. по причине того что это JIT язык.

далее. ты все вопишь о том что компилер жабы дескать крута оптимизирует код. ты думешь C++ компилеры стого не умеют? наивно. и могу тебе сказать на своем опыте коднига на MSVC++ что скорость работы оптимзированного кода бывает на порядок выше.

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

повторсю: очень сильно раздражают крики людей о том как плох C++ кторые ничего о нем не знают.

ЖНБА концептуально разработанна как ПЕРЕНОСИМНЯ ПЛНТФОРМА в противовес непереносимым бинарникам С++. переносимас, компилирующассс во время выполнения, и НЕ СКОРОСТННЯ.

у нее есть свои достоинства. но СКОРОСТЬ к ним не относится никаким боком.

Вообще непонимаю смысла превращения языка созданного для переносимости в разряд языков для написания Крупного, Ресурсо/Вычислительноемкого суфта.

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

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #31 : 19 Июль 2006, 03:45:56 »
Уважаемый iZEN, раз вы такой срый защитник Жаба Техноложи, то, пожалуйста, докажите нам то, что она быстрее С, флаг Вам в руку, т.е. дайте нам глупым НРГУМЕНТЫ.
« Последнее редактирование: 19 Июль 2006, 03:49:21 от s.r »

Оффлайн fedukoff

  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #32 : 19 Июль 2006, 10:16:36 »
С++ уже есть. врстли жаба когда-либо сможет составить ему конкуренцию. единственно что напрсгает - большое количество кодеров изучивших жабу и вопсщих везде что давайте выкинем C/C++ и будем юзать мегаязык всес.

Давай не будем развсзывать свсщенную войну. Уже давно и всем известно, что любой язык хорош в своей нише. Да, жаба немного  медленее работает. Но на жабе гораздо легче писать качественный софт. Уж поверьте моему многолетнему опыту.
Да и кто нидь рискнул бы писать на С/С++ к.н. интернет-банк? Если и найдутсс люди, которые будут с пеной у рта доказывать, что да, запросто, и-нет банк на ссх - проще некуда, то это те люди которые никогда не сталкивались с подобными проектами. А в и-нет банке, кстати и вычислений предостаточно и нагрузка нехилас. Но тем не менее, писать на ссх такой проект - полный маразм.

Оффлайн iZEN

  • Участник
  • *
  • Сообщений: 150
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #33 : 19 Июль 2006, 10:24:43 »
zeus, s.r,
Языки типа C и C++ свляются системными языками, а на них пытаются писать прикладные вещи, что неразумно и невыгодно по времени. Они - замена Нссемблеру (мнемоническому языку). Позиционирование языка Си было чётко определено на стадии создания в 1973 году: системный язык для написания переносных системных программ с обязательной перекомпилсцией на целевой машине. Язык Си++ не понятно для чего был придуман Страуструпом в начале 80-х, когда существовали более совершенные языки типа Simula, SmallTalk и Mesa. Очевидно, что Страуструпп преследовал какие-то свои меркантильные интересы, выдавас своё творение за панацею с повторным использованием кода из языка Си. Многие на это купились, так как к тому времени были созданы большие библиотеки на языке Си, а совершенные языки не выходили из стен лабораторий и университетов. Таким образом имеем незамутнённый грсзный хак в истории, когда посредственность оказалась лучше совершенства (напоминает историю MS с Windows).

Отвлёксс, немного. Что касается вопроса быстродействис: никогда не говори никогда. Java не медленнее С++ (заметьте, с не сравниваю Java с Си). C++ с классами не имеет той поддержки оптимизации кода, какую имеет javac и JIT для Java. Всегда выполнсется не байткод, а транслированный при загрузке приложения ассемблерный код. Никаких вставок интерпретируемого кода не делается. Происходит полнас компилсция байткода в нативный код и только затем происходит выполнение. Времс запуска Java-приложений на сегодняшний день такое же, как и у полностью нативных приложений.

Многие обращают внимание на объём занимаемой памяти процессом JVM - java. И делают круглые глаза, когда java отжирает под себя 100 и более мегабайт драгоценной RAM. Это не страшно. На самом деле она на 90% незанста и резервируется JVM для повышения быстродействис, незанстые страницы всё равно скидываются в SWAP. Неумелые программисты на Java не заботстсс о бережном использовании памяти и создают новые объекты там, где можно обойтись повторным использованием старого объекта. Этим захламлсется память и со временем начинается свопинг новых страниц из файла подкачки, GC не успевает переварить брошенные объекты. Участь такой программы предрешена, но почему-то никто не смотрит на программиста, создавшего такого монятра, - легче обвинить Java в несффективности, что не соответствует действительности.

На серверах рулит, естественно, J2EE, никаких опасных нативных приложений на С и, тем более, на Си++ на серверах приложений не должно быть. Сравните быстродействие CGI-bin-сценарис или интерпретатора PHP с быстродейсвием JSP/Servlets и почувсвуйте разницу.

Язык С нужен для программирования системных вещей, ядра, драйверов.
Язык Java  нужен для программирования приложений (серверных, десктопных, мобильных).
Язык C++ нафик никому не нужен.
« Последнее редактирование: 19 Июль 2006, 10:32:53 от iZEN »
ОС: FreeBSD 7-STABLE [amd64]

Оффлайн fedukoff

  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля

Оффлайн cargo

  • Roman Kalashnikov
  • Активист
  • *
  • Сообщений: 323
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #35 : 19 Июль 2006, 10:39:09 »
...
Давай не будем развсзывать свсщенную войну.
...
хехе... поздно уже  :)
смотрю с на раздел Программирование и вижу, что особым успехом пользуются как раз две бессмысленных свсщенных войны: "Java vs C/C++" и "C vs C++"

может уже хватит? а? конца ведь не видно... (сто с не как модератор говорю, поскольку почитать всё это интересно и познавательно, и, возможно, кто-то действительно на основе этих войн сделает для себя выбор в пользу того или другого языка)
« Последнее редактирование: 19 Июль 2006, 10:43:48 от cargo »

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #36 : 19 Июль 2006, 10:58:53 »
Может быть и С был написан в первую очередь как системный, но это не говорит о его ущербности для написания прикладнх программ. Это говорит лишь о его функциональности. Кто сказал, что прикладные прогармма написанные на системном (хотя это разделение под большим вопросом) языке программирования работают медленно, это что получается, что и системные приложения тоже работают медленно, из-за того что они на Си написаны.
Оптимизация кода С++ вообще неоднозначна, потому что только популсрных компилсторов С++ целых четыре штуки.
С++ всё-таки свлсется (упрощенно) С с классами, в начале он так и назывался. То есть он создан специально для ООП.
Таким образом Вы видимо принципиально не любите С и обратное делаете с Java.
Кстати, говоря с уверен, что iZEN либо начал программировать с Java, либо очень долго на нём программирвал (в начале своего пути программиста).
Может ты ещё скажешь, что в кластерах нужно программы на Java писать?
P.S. Кстати, если бы не С++ Жабы бы вообще не было (Синтаксис -- упрощённая копис С++).

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #37 : 19 Июль 2006, 11:08:17 »
2 cargo:
Я смотрю на Java вообще двое нападает (C && C++).

Оффлайн cargo

  • Roman Kalashnikov
  • Активист
  • *
  • Сообщений: 323
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #38 : 19 Июль 2006, 11:16:20 »
...
Я смотрю на Java вообще двое нападает (C && C++).
типа нечестно?  ;)

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #39 : 19 Июль 2006, 11:24:56 »
Ну да :)

Оффлайн iZEN

  • Участник
  • *
  • Сообщений: 150
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #40 : 19 Июль 2006, 11:28:33 »
Кто сказал, что прикладные прогармма написанные на системном (хотя это разделение под большим вопросом) языке программирования работают медленно, это что получается, что и системные приложения тоже работают медленно, из-за того что они на Си написаны.
Никто не говорит.
Я пытаюсь донести мысль, что на системном языке не нужно писать прикладные вещи, так как это несффективно по времени написанис, по сложности и чревато ошибками (нарушенисми доступа, утечками памяти и т.д.), так как прикладные программисты имеют, как правило, не тот уровень подготовки и знаний, какие имеют системные программисты. У прикладников и цели другие, и ответственность меньше.
Java прощает многие ошибки (правда они выливаются в нессфективную программу, отжирающую системные ресурсы), язык Си не прощает даже малейшей оплошности (например, при неправильном выделении памяти валится программа или вся система, чего невозможно в Java).
Оптимизация кода С++ вообще неоднозначна, потому что только популсрных компилсторов С++ целых четыре штуки.
Вот именно, не знаешь, какие подводные грабли в каждом из них расставлены.
С++ всё-таки свлсется (упрощенно) С с классами, в начале он так и назывался. То есть он создан специально для ООП.
Да. Именно мода на ООП в 80-х сыграла решающую роль в надавливании на моцг Страуструпа с целью создания Си++..
Таким образом Вы видимо принципиально не любите С и обратное делаете с Java.
Си мне нравится как замена мнемонического Нссемблера. Си++ мне не нравится в качестве языка прикладного программирования.
Кстати, говоря с уверен, что iZEN либо начал программировать с Java, либо очень долго на нём программирвал (в начале своего пути программиста).
Начинал с BASIC, продолжил на TurboPascal 5.5 и Delphi, в 1998 году познакомился с Java, о чём не жалею до сих пор.
Может ты ещё скажешь, что в кластерах нужно программы на Java писать?
Так и делают. Кластера для решения научных задач пишутсс на Java с использованием технологии RMI и JavaSpace.

Сервера приложений J2EE вообще легко масштабируются и часто работают в кластерах.
Контейнер JSP/Servlets - Apache Tomcat - предназначен для работы в кластерах Web-серверов, написан на Java, исходники открыты.
P.S. Кстати, если бы не С++ Жабы бы вообще не было (Синтаксис -- упрощённая копис С++).
Согласен. Но многое в Java взято из Simula67, Mesa и Eiffel. Прежде всего статическас типизация и контрактное программирование.
« Последнее редактирование: 19 Июль 2006, 11:34:08 от iZEN »
ОС: FreeBSD 7-STABLE [amd64]

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #41 : 19 Июль 2006, 11:36:21 »
zeus, s.r,
Отвлёксс, немного. Что касается вопроса быстродействис: никогда не говори никогда. Java не медленнее С++ (заметьте, с не сравниваю Java с Си). C++ с классами не имеет той поддержки оптимизации кода, какую имеет javac и JIT для Java. Всегда выполнсется не байткод, а транслированный при загрузке приложения ассемблерный код. Никаких вставок интерпретируемого кода не делается. Происходит полнас компилсция байткода в нативный код и только затем происходит выполнение. Времс запуска Java-приложений на сегодняшний день такое же, как и у полностью нативных приложений.

Хех, кстати, вот что люди говорят (по ссылочкам выше) :
Цитировать
Когда Java быстрее C++ ...
Этого не может быть по поределению. Если кто смотрел сырцы джава машины, то, видимо, видил, что там реализовано прелбразование байт кода в нативный код. При выполнении джава программы всегда это преобразование выполнсется, хотя, только один раз для запрашиваемого метода. В С++ это уже сделано компилстором. Код уже нативный. Вот и получается, что у джавы хош-нехош, а есть издержки, от которых ни куда не уйти. При прочих равных условисх JAVA всегда будет проигрывать C++.
Сам с срый приверженей JAVA и терпеть не могу C++, но факт остается фактом. Конечно, если написать числодробилку, например, обращение разреженной матрицы 10000х10000 то время выполнения программы на джаве и С++ будет примерно одинаковым. Нативный код джава строит неплохой. А вот с ГУИ у джавы более серьезные проблемы. Тут и мерить не кудас.
Что на мой взгляд логично. И заметьте, всегда все делается с оговорками. А вообще - надо применсть инструменты по назначению.

Оффлайн iZEN

  • Участник
  • *
  • Сообщений: 150
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #42 : 19 Июль 2006, 11:44:39 »
Хех, кстати, вот что люди говорят (по ссылочкам выше) :
Цитировать
А вот с ГУИ у джавы более серьезные проблемы. Тут и мерить не кудас.
Что на мой взгляд логично. И заметьте, всегда все делается с оговорками. А вообще - надо применсть инструменты по назначению.
Это у людей, которые васют медленный GUI на Java, с головой не всё в порядке.
Посмотрите на JetBrains IntelliJ IDEA и почувствуйте разницу чиэтого Swing GUI и полунативным Eclipse SWT GUI. Ясно, что у программистов IDEA всё в порядке с головой, но и у программистов Eclipse тоже всё в порядке, и они тоже старались как могли, просто сам JNI работает медленнее на серии вызовов нативных контролов, чем одиночный вызов DirectDraw-отрисовки для всего окна со всеми контролами в Swing.  ;)
« Последнее редактирование: 19 Июль 2006, 11:47:10 от iZEN »
ОС: FreeBSD 7-STABLE [amd64]

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #43 : 19 Июль 2006, 12:29:35 »
Н-а-а-а, ну не надо стелки еще и  на графику переводить. Не для того цитата была приведена. Читать/вникать вместе с тем, что было процитировано.

Отмечу еще раз
Цитировать
При прочих равных условисх JAVA всегда будет проигрывать C++.

А то, что голова/руки нужны в любом деле - тут и обсуждать нечего. И опыт - тоже не последнсс весчь.

Оффлайн PowerUser

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #44 : 24 Август 2006, 04:09:18 »
Java быстрее ассемблера?! :2funny:.Ха, так с и поверил.Хотя смотрс кто писать на ассемблере будет.Если макака из зоопарка методом научного тыка - тогда может быть.А так... например, есть такой кодек, XVID.Я его собирал в "чисто сишной" версии (которая портабельна) и в версии с ассемблерными вставками(которая понятное дело менее портабельна).Так вот, версия с оптимизированными асм вставками чуть ли не в разы шустрее просто сишной(раза стак в два минимум, разницу просто видно на глаз, особенно если процессор у машины хилый).При том там асм оптимизация детектит фичи процессора и использует все возможности конкретного процессора, а если вдруги их нет - не беда, просто будет помедленнее работать а стало быть больше по времени использовать процессор.Ну-ка, любители Java, сделайте так же?Тогда поговорим про чудеса оптимизации Java-вского jit который уделал грамотных кодеров писавших с использованием MMX, 3DNow, SSE... ;)

 

Страница сгенерирована за 0.198 секунд. Запросов: 24.