Comparación: Benchmark al generar valores aleatorios en base64 desde RUST, C y scripts de shell
Hola, soy un inútil.
GNU/Linux puede generar valores aleatorios desde /dev/random, pero ¿cuál es la diferencia cuando se compara con Clang?
Ya no hace falta decir que Clang es más rápido, pero de todos modos, echemos un vistazo.
Entorno de ejecución: ThinkPad X230

Lo siento, es viejo.
time for i in {1…500}; do head -c 15 /dev/random | base64; done
~~~
lsWpWr1qsqAxqPCwkHLB
jw8gkw+m6H1sfeFoIL9t
5nGDUKmyFgley8vVcqll
sZ+rLscmCvMOH8EJHmrm
real 0m1.405s
user 0m1.344s
sys 0m0.556s
time for i in {1…500}; do ./random ; done
~~~
FyLg5Ad/ja2eqffx725k
wTXQ3Yuaqom7H7LpPjHB
KFX5xaDBj5s4yWDDHpnV
2e0nQA7IAdM9RiTO4tKV
real 0m0.424s
user 0m0.311s
sys 0m0.144s
Oh...
Como era de esperar de C.
Y luego Rust.
time for i in {1…500}; do ./rran ; done
~~~
bx6QlFg2vpc8RZywqwdD
kJRKlrCq7nZgGG9SBuqa
JKHpR14IAxiB/1cDF1QZ
z/4IujC1bbe9FteRRh2P
real 0m0.658s
user 0m0.435s
sys 0m0.256s
Oh...
Conclusión
C es el más fuerte, pero considerando el costo de aprendizaje y codificación, Rust es más fácil.
Considerando la legibilidad como lenguaje de script, creo que un script de shell también tiene suficiente capacidad. Porque,
**head -c 15 /dev/random | base64
** ¡puede generar la salida con solo eso...!?
Disculpen la comparación tan burda. Lo siento.