Java по сравнению с C#: Есть ли какие-либо исследования, которые сравнивают их скорость выполнения?

Однажды я увидел следующее от коллеги:

equal = a.CompareTo (b) == 0;

Я заявил, что он не может предположить, что в общем случае, но он просто смеялся.

46
задан pentaphobe 6 January 2013 в 22:11
поделиться

3 ответа

Лучшее сравнение, которое мне известно, - это The Computer Language Benchmarks Game .

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

В настоящее время проводится сравнение openjdk и C # .NET Core.

В настоящее время оно близко, но .NET Core немного уступает. быстрее в большинстве тестов .

24
ответ дан 26 November 2019 в 20:41
поделиться

Это может вызвать флейм, но эй, это мое мнение ...
Во-первых, если ваш сайт работает слишком медленно, вам понадобится лучшее оборудование. Или больше оборудования и добавьте балансировку нагрузки на свой сайт. Если вы Google, вы получите огромные серверные фермы с тысячами компьютеров, которые будут обеспечивать молниеносную производительность, даже если сами сайты разработаны на каком-то устаревшем языке.
Большинство языков были оптимизированы. чтобы получить максимальную отдачу от своего оборудования и превзойти любой другой язык в этой конкретной среде при определенных настройках. Сравнивать языки не имеет особого смысла, потому что есть тысячи методов их еще большей оптимизации. Кроме того, как вы измеряете производительность для начала?
Допустим, вы смотрите на скорость выполнения. Язык X может выполнять некоторые задачи в 2 раза быстрее, чем язык Y. Однако язык Y более оптимизирован для выполнения нескольких потоков и может обслуживать в 10 раз больше пользователей, чем язык X, за то же время. Объедините это, и Y будет намного быстрее в среде клиент / сервер.
Но затем установите X в оптимизированной системе с операционной системой, которая очень нравится X, с дополнительным оборудованием, гадзиллионом байтов памяти и дискового пространства и около дюжины процессоров, и X снова побьет Y.
Итак, какой смысл знать скорость выполнения языков? Или даже сравнение языков? Откуда мы знаем, что составители отчета не были? т предвзято? Как мы уверены, что они использовали самые оптимальные настройки для каждого языка? Они даже написали самый оптимальный код для тестирования? А как вообще сравнивать конечные результаты? Время выполнения на пользователя? Или общее время выполнения?
Вернемся к языкам X и Y. X запускает задачу за 2 секунды, но поддерживает только 10 потоков одновременно, то есть 10 пользователей. Y требует 6 секунд, но одновременно обслуживает до 50 потоков. X будет быстрее для каждого пользователя. За две секунды X обработал 10 пользователей. За 6 секунд X обработал 30 пользователей. Но к тому времени Y обработал бы 50 пользователей. Таким образом, Y превзойдет X, когда у вас много пользователей, а X превзойдет Y с небольшим количеством пользователей. (Или темы.) Было бы интересно увидеть отчеты об этом, верно?

4
ответ дан 26 November 2019 в 20:41
поделиться

Вот хорошее недавнее исследование по теме:

Числовая производительность в C, C # и Java

Питер Сестофт ( скрыто)

ИТ-университет Копенгагена, Дания

Версия 0.9.1 от 19.02.2010

Аннотация: Мы сравниваем числовую производительность C, C # и Java в трех небольших случаях.

...

10
ответ дан 26 November 2019 в 20:41
поделиться