Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/09/2009, à 22:14

Shrat

calc, bc et expr : benchmark [RESOLU]

Bonjour,

Je voudrais benchmarker les logiciels bc, calc et expr. Je veux savoir lequel des trois est le plus rapide. Google ne m'a pas beaucoup aidé. J'aimerais savoir comment faire des benchmarks sérieux d'une commande en particulier. Je me demande aussi si python ne serait pas une bonne solution pour faire du calcul rapidement. Ce serait sympa si vous pouviez m'aider.

Merci.

Dernière modification par Shrat (Le 07/09/2009, à 00:22)

Hors ligne

#2 Le 06/09/2009, à 23:38

Link31

Re : calc, bc et expr : benchmark [RESOLU]

time (for ((i=0;i<1000;i++)); do echo "2 + 2"; done | bc >/dev/null)
time (for ((i=0;i<1000;i++)); do expr 2 + 2; done >/dev/null)
time (for ((i=0;i<1000;i++)); do echo "2 + 2"; done | python >/dev/null)

Hors ligne

#3 Le 07/09/2009, à 00:21

Shrat

Re : calc, bc et expr : benchmark [RESOLU]

Merci beaucoup!

Bon bah, yapafoto! bc est plus rapide...

Je suis étonné, calc est le plus lent de tous...

Hors ligne

#4 Le 18/01/2012, à 12:20

gl25.it

Re : calc, bc et expr : benchmark [RESOLU]

Link31, il me semble que tu ne testes pas la même chose dans tes trois lignes, puisque tu lances une seule fois bc et python (pour faire 1000 additions) alors que tu lances 1000 fois expr (pour faire une addition).


Ubuntist depuis Noël 2006.

Hors ligne

#5 Le 18/01/2012, à 14:27

Bousky

Re : calc, bc et expr : benchmark [RESOLU]

gl25.it a écrit :

Link31, il me semble que tu ne testes pas la même chose dans tes trois lignes, puisque tu lances une seule fois bc et python (pour faire 1000 additions) alors que tu lances 1000 fois expr (pour faire une addition).

En plus, bc et python sont pénalisés par le fait que tu utilises echo. Il vaudrait mieux utiliser :

time (for ((i=0;i<1000;i++)); do bc     <<< "2 + 2"; done >/dev/null)
time (for ((i=0;i<1000;i++)); do expr        2 + 2 ; done >/dev/null)
time (for ((i=0;i<1000;i++)); do python <<< "2 + 2"; done >/dev/null)

Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#6 Le 19/01/2012, à 15:15

gl25.it

Re : calc, bc et expr : benchmark [RESOLU]

Bousky, grace à toi je viens de découvrir les here-strings (<<<), qui m'a l'air bien pratique pour éviter des echo.

J'obtiens 2,0s pour expr, 3,0s pour bc, et 38,5s pour python.
Pour une division (12 / 3), les temps sont les mêmes (à 0,1s près). J'en conclus que c'est le chargement du programme ainsi que la partie interpretation de la commande qui est plus long en python (gros programme généraliste) que dans les petits outils spécialisés.


Ubuntist depuis Noël 2006.

Hors ligne

#7 Le 19/01/2012, à 16:45

Bousky

Re : calc, bc et expr : benchmark [RESOLU]

gl25.it a écrit :

Bousky, grace à toi je viens de découvrir les here-strings (<<<), qui m'a l'air bien pratique pour éviter des echo.

C'est à la fois plus lisible et plus efficace (plus rapide et moins gourmand).


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne