Rust supera a C ++ con los resultados del juego de referencia

A principios de este mes hubo una pequeña victoria. Según los últimos resultados del popular punto de referencia que compara el rendimiento de los lenguajes de programación, Rust ocupa el segundo lugar, situándose entre C y C ++:

imagen

Para comparar el rendimiento, se utiliza la media geométrica del tiempo de ejecución de 10 programas diferentes. Según resultados recientes, Rust superó a C ++ en 6 de cada 10 tareas .

Bajo el corte algunos detalles y una opinión sobre las perspectivas futuras.

¿Cómo interpretar correctamente los resultados?


Benchmarks Game es un proyecto popular en el que los lenguajes de programación se comparan en función de las mediciones de rendimiento escritas por una comunidad de programas que resuelven las tareas asignadas. Como regla general, para cada tarea hay al menos varias implementaciones bien optimizadas en el mismo idioma. Para resumir los resultados, solo se selecciona una implementación para cada idioma que muestre el mejor resultado.

Debería esperarse que para los lenguajes de programación populares, las mejores soluciones propuestas estén cerca del límite de rendimiento de los propios lenguajes. En los últimos meses, C, C ++ y Rust han mostrado resultados muy similares. Por lo tanto, podemos concluir que un programa Rust bien optimizado en promedio no debería ser inferior en rendimiento a los programas C o C ++ bien optimizados.

¡Pero los puntos de referencia no significan nada!


Si y no

Por supuesto, la diferencia en el rendimiento de diferentes implementaciones para su tarea específica dependerá de muchos factores, y ciertamente variará significativamente de una tarea a otra.

Por ejemplo, Rust muestra los peores resultados comparativos en tareas cuyas soluciones requieren el uso de expresiones regulares. A partir de estos resultados, podemos concluir que la implementación de expresiones regulares en Rust (caja de expresiones regulares) es más lenta que PCRE2 al resolver problemas. Por otro lado, Rust es notablemente superior a C ++ para tareas que requieren operaciones SIMD agresivas.

La conclusión general que debe hacerse: al elegir entre Rust y C ++, el rendimiento del lenguaje ya no puede ser una razón para dar preferencia a C ++. Al menos sin pruebas adicionales.

¿Puede cambiar la situación actual?


Bastante C, C ++ y Rust muestran resultados muy cercanos. Ahora la diferencia es tan insignificante que el error de medición afecta significativamente la distribución de los primeros lugares en la clasificación general. Es posible que el próximo mes Rust y C ++ cambien de lugar nuevamente, o que C dé paso a Rust o C ++ primero.

¿Deberíamos esperar una mejora adicional en el rendimiento de Rust?


Si El compilador Rust es un proyecto relativamente joven, y un número significativo de posibles optimizaciones aún no se han implementado completamente. El principal obstáculo es LLVM, que formalmente, aunque es un traductor universal, en la práctica está bien optimizado para C / C ++, y no funciona muy bien con el bytecode (IR) obtenido de otros lenguajes de programación.

Rust es un lenguaje de programación más riguroso que C y C ++. Esto significa que para un programa típico, Rust puede brindar muchas más garantías al traductor (LLVM), que a su vez puede usarlas para realizar optimizaciones más agresivas.

Por lo tanto, se debe esperar que en los próximos años, Rust pueda mejorar significativamente su rendimiento. Al mismo tiempo, los compiladores de C / C ++ se han desarrollado durante varias décadas, y durante este tiempo han alcanzado el límite de sus capacidades. Sus optimizaciones adicionales están limitadas principalmente por las características del lenguaje, en lugar de las implementaciones del compilador.

Hace solo unos años, pocos podían imaginar que es posible escribir código con mayor eficiencia que sea superior en rendimiento a las implementaciones de C / C ++, utilizando un nuevo lenguaje de programación e incluso (Dios me perdone) un enfoque funcional. Creo que en los próximos años, Rust demostrará lo contrario con el ejemplo, comenzando a ocupar un primer lugar seguro en varias pruebas de rendimiento. Que hay de ti

Source: https://habr.com/ru/post/480608/


All Articles