Rendimiento mono


¿Existen parámetros de rendimiento para Mono en comparación con, por ejemplo, Java en GNU/Linux?

¿Alguna vez has probado el rendimiento de Mono?

Author: Fernando Briano, 2008-12-19

8 answers

Hay un post interesante de Miguel sobre esto.

"Álvaro señala que, en el Idioma Shootout Benchmark Mono viene en el puesto 18 en comparación con el 10 de Java lugar.

Sabemos que el Java propietario de Sun edición (no la de código abierto, como que uno no está en ninguna parte para ser encontrado todavía) es más rápido que la mononucleosis, pero me sorprende que estuviéramos tan atrasados. Así que miré la comparación entre Java6 y Mono."

Comparación-Java y Mono http://tirania.org/pictures/javavsmono.png

Ver Detalles Aquí

 12
Author: amazedsaint,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-19 11:35:42

La última versión de este tiroteo se puede encontrar aquí.

En pocas palabras, en comparación con Java, Mono utiliza mucha menos memoria y se ejecuta un poco más lento.

Para mantener las cosas en perspectiva, ambos corren aproximadamente la misma velocidad en el gran esquema de las cosas. Ambos ejecutan estas pruebas órdenes de magnitud más rápido que lenguajes como Ruby, LUA, Python, PHP y Perl. Ambos están en el mismo parque de pelota que Pascal, OCaml, Haskell y LISP, lo que los hace aproximadamente la mitad de rápidos que C y C++. Haga clic en aquí para más detalles.

Para nitpick, debemos tener claro que nuestras respuestas aquí comparan Java y Mono C#. Tanto Mono como la JVM son entornos dirigidos por varios idiomas y la elección del idioma importa. Por ejemplo, si comparamos F # en Mono con Clojure en la JVM obtenemos resultados totalmente diferentes y de repente " Mono "es"más rápido".

Si bien estas comparaciones son interesantes e informativas, hay que tomarlas con un grano de sal. Primero, aunque algunas personas lo hacen, la mayoría de las personas que escriben código Java y C # no están ejecutando nada más que algoritmos numéricos en bucles estrechos. En segundo lugar, en algunos de estos lenguajes, los algoritmos probados pueden estar llamando a bibliotecas que están escritas en C y no en el idioma de destino en absoluto. Por último, otros puntos de referencia (e implementaciones) probablemente arrojarían resultados diferentes.

Aún así, es razonable inferir que Go es mucho más rápido que Ruby, C++ es más rápido que Go, y tanto Java como C# realizar bastante razonablemente dado lo productivos que son (IMHO).

 28
Author: Justin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-20 14:44:13

Amazedsaint > Hay un post interesante de Miguel sobre esto.

¡Ese gráfico está desfasado!

Aquí está la comparación actual de Mono C# 4.0

 12
Author: igouy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-17 22:21:40
 2
Author: Jon Harrop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-15 16:34:28

Mi punto de referencia (usando problemas matemáticos complejos y manipulación de la memoria (con cadenas raw)):

MonoDevelop Windows (se ejecuta en la consola usando. net 3.5): Realizando cálculos en 1.000.000 itens... 535 Realizando operações com strings longas... 2.038 Realizando cálculos en 1.000.000 itens... 530 Realizando operações com strings longas... 1.962 Realizando cálculos en 1.000.000 itens... 530 Realizando operações com strings longas... 1.963

Usando mono.exe on Windows: Realizando cálculos en 1.000.000 itens... 6.875 Realizando operações com strings longas... 6.206 Realizando cálculos en 1.000.000 itens... 6.840 Realizando operações com strings longas... 6.114 Realizando cálculos en 1.000.000 itens... 6.857 Realizando operações com strings longas... 6.116

Usando mono en Linux Ubuntu: Realizando cálculos en 1.000.000 itens... 5,934 Realizando operações com strings longas... 6,915 Realizando cálculos en 1.000.000 itens... 6,034 Realizando operações com strings longas... 7,489 Realizando cálculos en 1.000.000 itens... 5,740 Realizando operações com strings longas... 6,731

El mismo código fuente, pero en Visual Studio 2008: Realizando cálculos en 1.000.000 itens... 588 Realizando operações com strings longas... 1.289 Realizando cálculos en 1.000.000 itens... 566 Realizando operações com strings longas... 1.320 Realizando cálculos en 1.000.000 itens... 702 Realizando operações com strings longas... 1.393

VS 2008 exe generado con NGEN (ejecutable nativo): Realizando cálculos en 1.000.000 itens... 567 Realizando operações com strings longas... 1.255 Realizando cálculos en 1.000.000 itens... 563 Realizando operações com strings longas... 1.269 Realizando cálculos en 1.000.000 itens... 562 Realizando operações com strings longas... 1.263

En esas pruebas, mono es 10 veces más lento que. net 3.5 SP 1 = (

 2
Author: JCKodel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-26 20:17:11

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

Muchos idiomas: http://attractivechaos.github.com/plb/

Conclusión: Mono evolucionó mucho, pero sigue siendo lento en comparación con otros idiomas disponibles. Me interesé en Vala, que tiene casi la misma sintaxis de C# pero es más rápido que C simple en algunos casos.

 2
Author: Léo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-20 16:21:42

La mayoría de los puntos de referencia se basan en cálculos pesados de bucles estrechos. El tiempo comienza a contar justo antes del bucle y se detiene justo después. Si su aplicación está haciendo un procesamiento de datos pesado, evite C # y Java, simplemente opte por C/C++.

Es más probable que su aplicación sea del lado del servidor. Que tendrá que aceptar consultas, recuperar datos y enviarlos de vuelta. En tal escenario, la velocidad bruta del código generado no es relevante en comparación con otros parámetros.

Más te vale observe qué tan eficiente es el marco subyacente, qué tan rápida es la fase de inicialización que precede a la ejecución de su código, qué tan fácil es implementar tecnologías eficientes como E/S sin bloqueo, qué tan bien se libera la memoria y se recicla el proceso después de la ejecución del código. Qué fácil es implementar código, hacer que se amplíe...

El parámetro humano es aún más importante que todo eso. Un Java mal escrito es más lento que un buen C# y viceversa. Así que tienes que revisar a tus desarrolladores. Que el idioma que dominan, ¿qué herramienta les gusta más ? ¿Son adictos a VS/resharper o pueden usar Java IDE ? El tiempo dedicado a aprender un nuevo idioma o IDE no se dedicará a escribir un código mejor y más optimizado.

 1
Author: bokan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-09 07:57:59
 0
Author: Mehrdad Afshari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-19 11:35:54