Моноэффективность
Есть ли тесты производительности для Mono по сравнению с Java в GNU/Linux?
Вы когда-нибудь проверяли производительность Mono?
Ответы
Ответ 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).
Ответ 3
amazedsaint > У Мигеля есть интересный пост.
Эта карта устарела!
Здесь текущее сравнение Mono С# 4.0
Ответ 4
I сравнивает Mono 2.2 с другими другими виртуальными машинами, включая OCaml, LLVM,.NET и Java:
Mono 2.2 vs OCaml vs .NET vs LLVM vs JDK http://2.bp.blogspot.com/_NMRkpon4Ps0/SYNY8YtzTCI/AAAAAAAAACg/Bkjli4JV-NU/s1600-h/scimark2_individual.gif
Таким образом, Mono 2.2 лучше, чем Mono 2.0, но все же обычно намного медленнее, чем почти все остальное.
Ответ 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, не будет потрачено на то, чтобы лучше писать более оптимизированный код.
Ответ 8
Я видел один http://shootout.alioth.debian.org/gp4/csharp.php