Java vs C# vs C++
От: xRAZORx  
Дата: 07.09.15 17:46
Оценка:
Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.
Re: Java vs C# vs C++
От: uncommon Ниоткуда  
Дата: 08.09.15 03:19
Оценка: 9 (1) +9 -1
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.


Это всё бред. Не заморачивайся. Вообще, на хабре мало чего хорошего бывает.
Отредактировано 08.09.2015 3:20 uncommon . Предыдущая версия .
Re: Java vs C# vs C++
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.09.15 05:11
Оценка: +4
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++

Эта статья написана человеком, который явно плохо знает плюсы. Даже с первого взгляда видно, что его плюсовый код пестрит warning'ами (я его не компилировал — честно!). Ну и забавные пассажи про оверхед умных указателей — беее. Если он знает С# также как и плюсы, то смотреть на тест нет смысла.

P.S. Я уже молчу про центральный пассаж, что bubble sort — это типичный код. Скажите мне пожалуйста, кто из плюсовиков или шарпистов вообще писал хоть какую-нибудь сортировку? А buble sort?
Re: Java vs C# vs C++
От: dya-victor Россия  
Дата: 08.09.15 05:32
Оценка: +4
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.


В реальном мире инструмент выбирают в зависимости от задачи. Так что такие статьи можно воспринимать как развлекательные
Re[2]: Java vs C# vs C++
От: Blazkowicz Россия  
Дата: 08.09.15 06:37
Оценка: +2 :))) :))
Здравствуйте, Nuzhny, Вы писали:

N>Ну и забавные пассажи про оверхед умных указателей — беее.

Но толика правды в этом же есть? Умные указатели признаны довольно тормозным решением.
Re: Java vs C# vs C++
От: Blazkowicz Россия  
Дата: 08.09.15 06:41
Оценка: +1 :)
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.

Микробенчмарки зачастую бесполезное занятие. Есть куча примеров, где Java догоняет С++ по скорости. Хотя, в среднем, по больнице, это конечно же не так. Есть просто концептуальные решения, которые в Java будут быстрее. Тот же GC, очень эффективно собирает объекты по сравнению с вызовом кучи деструкторов в С++.
Re[2]: Java vs C# vs C++
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 08.09.15 06:53
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>P.S. Я уже молчу про центральный пассаж, что bubble sort — это типичный код. Скажите мне пожалуйста, кто из плюсовиков или шарпистов вообще писал хоть какую-нибудь сортировку? А buble sort?


Сортировку — конечно. А пузырьковую в компьютерной графике используют. Как ни странно, иногда это правильный выбор.
Ce n'est que pour vous dire ce que je vous dis.
Re[3]: Java vs C# vs C++
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.09.15 08:11
Оценка: +2
Здравствуйте, Blazkowicz, Вы писали:

N>>Ну и забавные пассажи про оверхед умных указателей — беее.

B>Но толика правды в этом же есть? Умные указатели признаны довольно тормозным решением.

Зависит от типа указателя и от задачи. Да вообще от многих и многих факторов.
Что же мы видим в статье, какую типичную задачу? Сортировку пузырьком. Будут ли умные указатели вносить в неё оверхед? Нет, конечно. К чему тогда этот голословный пассаж? Непонятно.
Re[3]: Java vs C# vs C++
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.09.15 08:14
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Сортировку — конечно. А пузырьковую в компьютерной графике используют. Как ни странно, иногда это правильный выбор.


На плюсах или на C# ты писал сортировку? В компьютерной графике — это не на шейдерах случайно? Интересно, когда это реально необходимо, можешь рассказать?
Re[4]: Java vs C# vs C++
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 08.09.15 08:52
Оценка: 5 (1)
Здравствуйте, Nuzhny, Вы писали:

N>На плюсах или на C# ты писал сортировку?


На плюсах! Действительно сложно представить, когда это может понадобится в шарпе.

N>В компьютерной графике — это не на шейдерах случайно? Интересно, когда это реально необходимо, можешь рассказать?


Встречал в сортировке по прозрачности, когда предметов в неправильном порядке мало и они идут друг за другом.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Java vs C# vs C++
От: Zenden Россия  
Дата: 09.09.15 04:55
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, xRAZORx, Вы писали:


RAZ>>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.

B>Микробенчмарки зачастую бесполезное занятие. Есть куча примеров, где Java догоняет С++ по скорости. Хотя, в среднем, по больнице, это конечно же не так. Есть просто концептуальные решения, которые в Java будут быстрее. Тот же GC, очень эффективно собирает объекты по сравнению с вызовом кучи деструкторов в С++.

Чо же тогда браузеры не пишут на языке с GC? Там же куча объектов, куча деструкторов.....
Re: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 09.09.15 06:32
Оценка: +3 -1 :)
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.


И на C# и на Java (и даже на JavaScript!) можно писать быстрый код, грубо говоря с незначительным отставанием от C++.
Если выйти за рамки примитивнейшего примера обработки массива целых целиком внутри одной функции — то такой код на Java/C# будет сложнее чем аналогичного кода на C++, такого кода будет больше и он будет намного ниже уровнем.
Основная причина этого в том, что в C++ многие механизмы абстракции бесплатны, либо крайне дешёвые — в то время как на Java/C# они вносят overhead, и для того чтобы догнать C++ от них приходится отказываться.
То есть на C#/Java (да и на JavaScript) стоит выбор — либо использовать высокоуровневые средства и получать тормоза, либо отказываться от них, пилить низкоуровневый boilerplate и получать производительность близкую к высокоуровнему коду C++.

Вот в этой ветке
Автор: mik1
Дата: 02.06.15
есть конкретные примеры на тему — там и C++, и C#, и Java, и даже C++ скомпилированный в JavaScript.
Отредактировано 09.09.2015 6:33 Evgeny.Panasyuk . Предыдущая версия .
Re[3]: Java vs C# vs C++
От: Blazkowicz Россия  
Дата: 09.09.15 06:36
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Чо же тогда браузеры не пишут на языке с GC? Там же куча объектов, куча деструкторов.....

Во-первых графика. Куча графики с серьезными требованиями к производительности. Особенно учитывая то как клиентская JVM тупит для десктопных приложений.
Во-вторых, а кто сказал, что в браузерах нет GC?
Re[3]: Java vs C# vs C++
От: Poopy Joe Бельгия  
Дата: 09.09.15 07:59
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Чо же тогда браузеры не пишут на языке с GC? Там же куча объектов, куча деструкторов.....

Можно подумать, что браузеры пишут какие-то небожители, которые всегда знают как сделать правильно.
Re[3]: Java vs C# vs C++
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.09.15 11:05
Оценка: 136 (6)
Здравствуйте, Zenden, Вы писали:

Z>Чо же тогда браузеры не пишут на языке с GC?

Потому что mark-and-sweep gc довольно плохо работает когда много долгоживущих связанных объектов. Время работы GC пропорционально размеру дерева живых объектов. В обычной программе большинство объектов короткоживущие и GC работает хорошо. В сценариях тип браузера гораздо хуже.

Z>Там же куча объектов, куча деструкторов.....

Каких деструкторов? В движках браузера есть свой GC, вернее даже два, один для DOM, другой для JS. В ранних версиях они были не связаны, поэтому циклические ссылки между DOM и объектами JS вызывали утечку. Стандартный аллокатор C++ и любое подобие умных указателей (которые освобождают память в деструкторе) на такой задаче будет тормозить не меньше Java.

В отличие от GC джавы или .net, gc в браузере не пытается убирать весь мусор. Он в первую очередь заточен на низкую латентность. Поэтому каждая страница в современном браузере кушает 50-100мб памяти и очень легко на странице сожрать больше памяти, чем на сервере, который эти страницы раздает тысячам клиентов.

GC в браузере срабатывает не в момент выделения памяти, а в момент когда JS\DOM перестает работать. Это позволяет скрыть задержку GC, которая зачастую доходит до десятков мс (что сильно больше gen1 и на уровне gen2 сборки для C# и Java). То же самое можно и на managed языках сделать. Более того, в .NETном WPF делается примерно тоже, что в браузере, ибо там тоже мелких объектов.
Re[2]: Java vs C# vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 09.09.15 12:48
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>P.S. Я уже молчу про центральный пассаж, что bubble sort — это типичный код. Скажите мне пожалуйста, кто из плюсовиков или шарпистов вообще писал хоть какую-нибудь сортировку? А buble sort?


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

Вообще сортировки интересны совсем не тем, что их иногда таки нужно писать. 90% простейших алгоритмов в софте это видоизмененные версии сортировок. Если у человека проблема с сортировками, его незачем вообще в код пускать.
Re[2]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.09.15 15:13
Оценка:
Здравствуйте, Nuzhny, Вы писали:



N>P.S. Я уже молчу про центральный пассаж, что bubble sort — это типичный код. Скажите мне пожалуйста, кто из плюсовиков или шарпистов вообще писал хоть какую-нибудь сортировку? А buble sort?


Я.
http://rsdn.ru/forum/message/577195
Автор: Serginio1
Дата: 22.03.04

http://rsdn.ru/forum/dotnet/415352.1
Автор: Serginio1
Дата: 20.10.03

http://rsdn.ru/forum/philosophy/577195.1
Автор: Serginio1
Дата: 22.03.04


http://rsdn.ru/article/alg/tlsd.xml
Автор(ы): Сергей Смирнов (Serginio1)
Дата: 14.08.2004
Пример реализации двухуровневого массива с помощью нового средства С# — generics. Сравнение производительности различных реализаций сортированных списков.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 09.09.2015 15:18 Serginio1 . Предыдущая версия . Еще …
Отредактировано 09.09.2015 15:17 Serginio1 . Предыдущая версия .
Re: Java vs C# vs C++
От: vsb Казахстан  
Дата: 09.09.15 16:38
Оценка:
В среднем C++ будет быстрее, C# и Java будут идти на одном уровне, C# вероятно немного быстрее. При необходимости C# и Java можно оптимизировать довольно близко к уровню C++ или переписать нужную часть на C++.

В чём C++ будет идти вне конкуренции это в потреблении памяти (Java, C# будут потреблять в разы больше) и в предсказуемости времени выполнения (Java, C# могут включить сборщик мусора в любой момент и приложение может перестать отвечать некоторое время). С последним можно пытаться бороться более-менее успешно, но лучше писать такой код на C++.
Re[2]: Java vs C# vs C++
От: Evgeny.Panasyuk Россия  
Дата: 09.09.15 17:22
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>P.S. Я уже молчу про центральный пассаж, что bubble sort — это типичный код. Скажите мне пожалуйста, кто из плюсовиков или шарпистов вообще писал хоть какую-нибудь сортировку? А buble sort?


Там дело не в том что это bubble sort, а в её интерфейсе.
Реальная сортировка (например std::sort) позволяет сортировать последовательности из разных типов контейнеров, с разными типами элементов, и с разными предикатами сравнения, задаваемыми например замыканиями. Если сделать такой интерфейс, то C#, и тем более Java, будут серьёзно проигрывать.
Re: Java vs C# vs C++
От: lpd Черногория  
Дата: 09.09.15 18:11
Оценка: +1
Здравствуйте, xRAZORx, Вы писали:

RAZ>Тут читал на хабре статью по сравнению производительности C# и C++. Сам джаву знаю плохо, но, может быть, кто-то производил замеры сам? Было бы интересно посмотреть сравнение, тем более везде говорят, что шарп и джава одинаковые по скорости.


Однажды скомпилировал на Java целочисленные вычисления(БПФ), написанные на C++. Разница была в 8 раз.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.