"Fue por la noche, no había nada que hacer" o una historia corta sobre la comparación del rendimiento de los lenguajes de programación.

Lo del "banco" es ... Después de varios días de inactividad, comienza el síndrome de abstinencia, quiero ocuparme de algo. A veces me distraían los proyectos favoritos, a veces la lectura de literatura ... Ahora les contaré lo que sucedió durante el último "modo de espera".





Durante muchos años estuve preocupado por el rendimiento del lenguaje de programación (principalmente interesado en PHP ). La lista a continuación contenía algunas de mis creencias, hasta hace poco:





  • PHP es uno de los lenguajes de programación más lentos





  • Python es más rápido que PHP





  • Ruby es más rápido que PHP





  • C / C ++ es mucho más rápido que Python y PHP combinados





  • El ensamblador es un orden de magnitud más rápido que C / C ++





El primer paso fue decidir qué prueba tomar como base. Intentemos escribir un programa para encontrar números primos (soy consciente de que hay muchos algoritmos para encontrar números primos, un buen artículo sobre este tema).





Se tomó como base el siguiente código (enumeración primitiva, que ni siquiera se detiene si ya sabe que el número no es primo):






<?php

$primeNumberCount = isset($argv[1]) ? $argv[1] : 100;

$number = 0;
while ($primeNumberCount > 0) {
    $number++;
    $j = 0;

    for ($i = 1; $i <= $number; $i++) {
        if ($number % $i === 0) {
            $j++;
        }
    }

    if ($j === 2) {
        $primeNumberCount--;
    }
}

echo 'The latest prime number: ' . $number . PHP_EOL;
      
      



Y luego todo es como una niebla: Python, C / C ++, Pascal, Go, etc. Todas las fuentes se pueden ver aquí . Hice todas las pruebas en la ventana acoplable para no obstruir la computadora.





, . Assembler , - . , Assembler/NASM , .





:





, :





  • PHP Python Ruby





  • PHP





  • Python 3 Python 2





  • /C++ Assembler/NASM 15%





  • Rust





  • muy sorprendido por el resultado de la prueba de Node.js / Javascript (los desarrolladores de V8 son atractivos)





  • etc





Por el momento, planeo agregar gradualmente nuevas pruebas (cuando el tiempo y el estado de ánimo lo permitan).





El propósito de este artículo no es mostrar qué lenguaje de programación es el más rápido, sino que podemos estar equivocados en nuestras creencias y que no debemos creer todas las historias en la sala de fumadores (muchos de mis delirios son de allí, de alguien en algún lugar escuché que X es más rápido que Y).





PD: las fuentes se pueden encontrar aquí





PPS. Agregó Ruby 3 , algo no ayudó mucho ...





PPPS. Se modificó el método de cálculo del tiempo de ejecución, se incrementó el número ordinal de un número primo (de 5000 a 7000).








All Articles