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).