DEV Community

Cover image for Rust vs Python: Comparativa de Velocidad con un Proyecto Real
Felix Tineo
Felix Tineo

Posted on

Rust vs Python: Comparativa de Velocidad con un Proyecto Real

Si alguna vez te has preguntado qué tan rápido es Rust en comparación con Python, este artículo es para ti. Decidí crear dos proyectos que realicen exactamente la misma tarea para medir la diferencia de rendimiento entre ambos lenguajes. A continuación, comparto los detalles del experimento y los resultados obtenidos.


El Problema

Para esta prueba, implementé un programa que encuentra todos los números primos entre 1 y 10 millones. Este problema es computacionalmente intensivo y refleja bien las diferencias de rendimiento en operaciones matemáticas y de manejo de memoria.

Tecnologías Utilizadas

  1. Python: Implementación con un enfoque simple utilizando listas.
    • Versión: Python 3.11
    • Librerías: time (para medición)
  2. Rust: Implementación equivalente con un enfoque optimizado.
    • Versión: Rust 1.82
    • Herramientas: cargo

Código Python

python
Copy code
import time

def find_primes(limit):
    primes = []
    for num in range(2, limit + 1):
        is_prime = all(num % i != 0 for i in range(2, int(num**0.5) + 1))
        if is_prime:
            primes.append(num)
    return primes

start_time = time.time()
primes = find_primes(10_000_000)
end_time = time.time()

print(f"Encontrados {len(primes)} primos en {end_time - start_time:.2f} segundos.")

Enter fullscreen mode Exit fullscreen mode

Código Rust

rust
Copy code
use std::time::Instant;

fn find_primes(limit: u64) -> Vec<u64> {
    let mut primes = Vec::new();
    for num in 2..=limit {
        let is_prime = (2..=((num as f64).sqrt() as u64)).all(|i| num % i != 0);
        if is_prime {
            primes.push(num);
        }
    }
    primes
}

fn main() {
    let start = Instant::now();
    let primes = find_primes(10_000_000);
    let duration = start.elapsed();

    println!(
        "Encontrados {} primos en {:.2?} segundos.",
        primes.len(),
        duration
    );
}

Enter fullscreen mode Exit fullscreen mode

Herramientas para Medir el Rendimiento

  1. Python:
    • Se utiliza el módulo time para medir el tiempo de ejecución.
    • Alternativa avanzada: timeit para una evaluación más precisa.
  2. Rust:
    • El módulo std::time mide el tiempo de ejecución directamente en el programa.

Resultados

En mi máquina (procesador Intel® Core™ i7-7700 CPU @ 3.60GHz × 8, 32 GB de RAM):

  • Python: 98.66 segundos
  • Rust: 4.51 segundos

¡Rust fue aproximadamente 22 veces más rápido que Python! Esto es gracias a su compilación a código máquina optimizado y su manejo eficiente de memoria.

Rust

Image rust time in the terminal

Python

Image python time in the terminal


Conclusión

Aunque Python es excelente para desarrollo rápido y prototipos, incluso personalmente yo uso Python y otros lenguajes como Typescript o Java más a menudo que Rust, estoy claramente convencido de que Rust es la opción ideal para sistemas críticos donde la velocidad y el control son esenciales. Este experimento me dejó claro por qué empresas de alto rendimiento están apostando por Rust. Sin duda alguna es una opción muy interesante de cara al futuro en un mundo donde los recursos se están quedando cortos en términos de energía en el caso de tecnologías como blockchain o en términos de procesamiento en el caso de la Inteligencia artificial.

¿Qué opinas? ¿Es la velocidad suficiente razón para cambiar a Rust en ciertos casos? 🧐

Puedes encontrar el código completo y replicar los resultados aquí: Repositorio GitHub

Top comments (0)