Flutter vs Native vs React-Native: examen del rendimiento

Hoy en día, algunas de las soluciones más populares para crear aplicaciones móviles son enfoques nativos o multiplataforma que utilizan React Native o Flutter.

Si bien el desarrollo nativo se posiciona como una solución técnica AAA, tiene algunas desventajas que crean un espacio de mercado para las aplicaciones multiplataforma.

En general, el desarrollo nativo requiere más esfuerzo por parte de la empresa de desarrollo de software y su equipo para lograr el proyecto, pero da control total sobre las cuestiones técnicas complicadas debajo del capó.

Por otro lado, si elige multiplataforma, puede acelerar significativamente el proceso de desarrollo debido a una base de código común, facilitar el soporte del proyecto y reducir los gastos de desarrollo.

Una ventaja más del desarrollo nativo frente al multiplataforma es el rendimiento. En el mundo técnico, puede encontrar estereotipos de “las aplicaciones multiplataforma son lentas”. Decidimos probar si es cierto y hasta qué punto las aplicaciones multiplataforma son más lentas que las nativas.

Existen diferentes tipos de actuación, algunas de ellas son:

  • Interactuar con la API del teléfono (acceder a fotos, sistema de archivos, obtener la ubicación del GPS, etc.).
  • Velocidad de representación (suavidad de la animación, fotogramas por segundo mientras se cambia la interfaz de usuario o algunos efectos de la interfaz de usuario que tienen lugar en el tiempo).
  • Lógica empresarial (la velocidad de los cálculos matemáticos y las manipulaciones de la memoria. Este tipo de rendimiento es más importante para las aplicaciones con lógica empresarial compleja).

En este artículo, compartimos los resultados de las pruebas de rendimiento que muestran cálculos matemáticos del número Pi implementados en enfoques nativos y multiplataforma.

Prueba de uso intensivo de memoria (algoritmo Gauss-Legendre) para iOS

iOS

  1. Objective-C es el mejor lenguaje de programación para el desarrollo de iOS. Swift es 1,7 veces más lento en comparación con Objective C.
  2. Sorpresa: Flutter es un poco más rápido que Swift (en 15%).
  3. React Native es 20 veces más lento que Objective C.

Prueba intensiva de CPU (algoritmo de Borwein) para iOS

iOS

  1. Objective C es la mejor opción para el desarrollo de aplicaciones iOS. Swift es 1,9 veces más lento en comparación con Objective-C.
  2. Flutter es 5 veces más lento que Swift.
  3. La versión React Native es más de 15 veces más lenta que la versión Swift.

Prueba de uso intensivo de memoria (algoritmo Gauss-Legendre) para Android

Android

  1. Java y Kotlin tienen indicaciones de rendimiento similares y son las mejores opciones para el desarrollo de Android.
  2. Flutter es aproximadamente un 20 % más lento que el nativo.
  3. React Native es unas 15 veces más lento que el nativo.

Prueba intensiva de CPU (algoritmo de Borwein) para Android

Android

  1. Java y Kotlin tienen indicaciones de rendimiento similares y son las mejores opciones para el desarrollo de Android.
  2. Native es 2 veces más rápido que Flutter.
  3. React native es unas 6 veces más lento que native.

Detalles técnicos:

  • Todas las pruebas se han realizado en dispositivos físicos reales (iPhone 6s IOS 13.2.3 y Xiaomi Redmi Note 5 con Android 9.0);
  • Medimos el rendimiento en las versiones de lanzamiento. En algunos casos, las compilaciones de depuración pueden ser significativamente más lentas que las compilaciones de lanzamiento.
  • Todas las pruebas se realizaron varias veces y se calculó el resultado promedio.

Se utilizaron los algoritmos de Gauss-Legendre & Borwein para calcular los números Pi. El número Pi ha sido calculado 100 veces con una precisión de 10 millones de dígitos.

  • Gauss-Legendre es un algoritmo que consume más memoria en comparación con Borwein, pero Borwein requiere más CPU.
  • Código fuente

Conclusiones clave

  1. En resumen, no todas las aplicaciones multiplataforma son lentas. Además, las aplicaciones de Flutter tienen un mayor rendimiento que las aplicaciones de Swift.
  2. Objective C y Flutter serán una buena elección si deseas desarrollar una aplicación iOS súper rápida.
  3. Para las aplicaciones con cálculos de alta carga, Flutter es una buena opción para el desarrollo de aplicaciones tanto para Android como para iOS.