Подтвердить что ты не робот

Моноэффективность

Есть ли тесты производительности для Mono по сравнению с Java в GNU/Linux?

Вы когда-нибудь проверяли производительность Mono?

4b9b3361

Ответ 1

У Мигеля есть интересный пост.

"Альваро указывает, что в Выпущена тестовая версия Language Shootout Mono на 18-м месте по сравнению с Java 10th место.

Мы знаем, что собственная Java-технология Sun (не с открытым исходным кодом, так как что его еще нигде не найти) быстрее, чем Mono, но я был удивился, что мы так отстали. Поэтому я посмотрел на сравнение между Java6 и Mono."

Сравнение - Java и Mono http://tirania.org/pictures/javavsmono.png

Подробнее см. здесь

Ответ 2

Последнюю версию этой перестрелки можно найти здесь.

В двух словах, по сравнению с Java, Mono использует гораздо меньше памяти и работает немного медленнее.

Чтобы держать вещи в перспективе, они оба имеют одинаковую скорость в великой схеме вещей. Они оба выполняют эти тесты на порядок быстрее, чем такие языки, как Ruby, LUA, Python, PHP и Perl. Они оба находятся в одном шариковом парке, как Pascal, OCaml, Haskell и LISP, что делает их примерно вдвое быстрее, чем C и С++. Нажмите здесь для более подробной информации.

Чтобы понять, мы должны понимать, что наши ответы здесь сравнивают Java и Mono С#. Как Mono, так и JVM - это среды, ориентированные на различные языки, и выбор языка. Например, если мы сравниваем F # на Mono с Clojure на JVM, мы получаем совершенно разные результаты, и внезапно "Моно" "быстрее".

Хотя эти сравнения интересны и информативны, вы должны взять их с солью. Во-первых, хотя некоторые люди делают это, большинство людей, пишущих Java и код С#, не работают ни с чем, кроме числовых алгоритмов в жестких циклах. Во-вторых, на некоторых из этих языков проверенные алгоритмы могут просто быть вызваны в библиотеки, которые написаны на C, а не на целевом языке вообще. Наконец, другие контрольные показатели (и реализации), вероятно, дадут разные результаты.

Тем не менее, разумно сделать вывод, что Go намного быстрее, чем Ruby, С++ быстрее, чем Go, и Java и С# выполняют довольно разумно, насколько продуктивны они (IMHO).

Ответ 5

Мой тест (с использованием сложных математических проблем и манипуляций с памятью (с необработанными строками)):

MonoDevelop Windows (работает на консоли с использованием .net 3.5): Realizando cálculos em 1.000.000 itens... 535 Realizando operações com strings longas... 2.038 Realizando cálculos em 1.000.000 itens... 530 Realizando operações com strings longas... 1.962 Realizando cálculos em 1.000.000 itens... 530 Realizando operações com strings longas... 1.963

Использование mono.exe в Windows: Realizando cálculos em 1.000.000 itens... 6.875 Realizando operações com strings longas... 6.206 Realizando cálculos em 1.000.000 itens... 6.840 Realizando operações com strings longas... 6.114 Realizando cálculos em 1.000.000 itens... 6.857 Realizando operações com strings longas... 6.116

Использование моно на Linux Ubuntu: Realizando cálculos em 1.000.000 itens... 5,934 Realizando operações com strings longas... 6,915 Realizando cálculos em 1.000.000 itens... 6,034 Realizando operações com strings longas... 7,489 Realizando cálculos em 1.000.000 itens... 5,740 Realizando operações com strings longas... 6,731

Тот же исходный код, но в Visual Studio 2008: Realizando cálculos em 1.000.000 itens... 588 Realizando operações com strings longas... 1.289 Realizando cálculos em 1.000.000 itens... 566 Realizando operações com strings longas... 1.320 Realizando cálculos em 1.000.000 itens... 702 Realizando operações com strings longas... 1.393

VS 2008 сгенерирован exe с NGEN (собственный исполняемый файл): Realizando cálculos em 1.000.000 itens... 567 Realizando operações com strings longas... 1.255 Realizando cálculos em 1.000.000 itens... 563 Realizando operações com strings longas... 1.269 Realizando cálculos em 1.000.000 itens... 562 Realizando operações com strings longas... 1.263

В этих тестах mono в 10 раз медленнее, чем .net 3.5 SP 1 = (

Ответ 6

С++, С# (Mono), C и Vala: http://jpaflacerda.wordpress.com/2011/11/08/vala-benchmarking/

Многие языки: http://attractivechaos.github.com/plb/

Заключение: Моноэволюция много, но она по-прежнему медленна по сравнению с другими доступными языками. Меня заинтересовал Vala, который имеет почти такой же синтаксис С#, но в некоторых случаях быстрее обычного C.

Ответ 7

Большинство эталонных тестов основаны на интенсивном вычислении плотных циклов. Время начала отсчета непосредственно перед циклом и останавливается сразу после. Если ваше приложение выполняет тяжелую обработку данных, то избегайте как С#, так и Java, просто перейдите на C/С++.

Скорее всего, ваше приложение будет сервером. Что он должен будет принимать запросы, получать данные и отправлять их обратно. В таком сценарии необработанная скорость сгенерированного кода не имеет отношения к другим параметрам.

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

Человеческий параметр еще более важен, чем все это. Плохо написанная Java медленнее, чем хороший С# и наоборот. Поэтому вы должны проверить своих разработчиков. Какой язык они осваивают, какой инструмент им нравится? Являются ли они зависимыми от VS/resharper или могут использовать Java IDE? Время, затрачиваемое на изучение нового языка или IDE, не будет потрачено на то, чтобы лучше писать более оптимизированный код.