Aller au contenu

vitesse de calcul de php


Sujets conseillés

Posté

salut à tous!

je suis en train de dévellopper un système de sécurisation de transfert de données avec l'algorithme de Diffie-Hellman entre autre et j'aimerais savoir comment calculer la vitesse d'exécution de php sur des opération de puissance et de modulo.

quelqu'un aurait-il une formule approximative ??

Merci!

Posté

Bonjour,

La technique la plus simple consiste à renseigner deux variables en début et en fin de script avec la fonction time() (ou microtime() pour être plus précis) puis de faire la différence ;)

Posté

le problème c'est que j'aimerais calculer les temps de différentes instructions afin de savoir qu'elle calcul serait le plus rentable niveau sécurisation/temps d'éxécution.

il faudrais une formule qui donne le résultat en cycle d'horloge cpu par exemple.

Posté (modifié)

oui je vien d'éssayer voilà les résultats pour ceux que ça interresse :

aplication de la formule nbr^e

<br>e=66   nbr=2345   time=0.00013089179992676
<br>e=66   nbr=23   time=4.6014785766602E-005
<br>e=132   nbr=2345   time=0.00033807754516602
<br>e=132   nbr=23   time=9.2983245849609E-005
<br>e=264   nbr=2345   time=0.0013420581817627
<br>e=264   nbr=23   time=0.00025081634521484
<br>e=528   nbr=2345   time=0.0035789012908936
<br>e=528   nbr=23   time=0.00083804130554199
<br>e=1056   nbr=2345   time=0.011358022689819
<br>e=1056   nbr=23   time=0.0026140213012695
<br>e=2112   nbr=2345   time=0.032015085220337
<br>e=2112   nbr=23   time=0.008634090423584
<br>e=4224   nbr=2345   time=0.10129499435425
<br>e=4224   nbr=23   time=0.025021076202393
<br>e=8448   nbr=2345   time=0.3072030544281
<br>e=8448   nbr=23   time=0.076842069625854
<br>e=16896   nbr=2345   time=0.95268702507019
<br>e=16896   nbr=23   time=0.23299193382263
<br>e=33792   nbr=2345   time=2.7823059558868
<br>e=33792   nbr=23   time=0.7032299041748
<br>e=67584   nbr=2345   time=8.4500279426575
<br>e=67584   nbr=23   time=2.1169030666351
<br>e=135168   nbr=2345   time=25.198705196381
<br>e=135168   nbr=23   time=6.3891258239746

aplication de la formule nbr%m

<br>m=6   nbr=89394865109840023762841911904532   time=3.0040740966797E-005
<br>m=6   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=18   nbr=89394865109840023762841911904532   time=2.5033950805664E-005
<br>m=18   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=54   nbr=89394865109840023762841911904532   time=2.5033950805664E-005
<br>m=54   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=3.0040740966797E-005
<br>m=162   nbr=89394865109840023762841911904532   time=2.5033950805664E-005
<br>m=162   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=486   nbr=89394865109840023762841911904532   time=2.4080276489258E-005
<br>m=486   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=1458   nbr=89394865109840023762841911904532   time=2.4795532226563E-005
<br>m=1458   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.4080276489258E-005
<br>m=4374   nbr=89394865109840023762841911904532   time=2.4080276489258E-005
<br>m=4374   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=13122   nbr=89394865109840023762841911904532   time=2.3841857910156E-005
<br>m=13122   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=39366   nbr=89394865109840023762841911904532   time=2.4080276489258E-005
<br>m=39366   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=118098   nbr=89394865109840023762841911904532   time=2.3841857910156E-005
<br>m=118098   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=354294   nbr=89394865109840023762841911904532   time=2.4080276489258E-005
<br>m=354294   nbr=8939486510984002376284191190453289394865109840023762841911904532   time=2.5033950805664E-005
<br>m=1062882   nbr=89394865109840023762841911904532   time=2.5033950805664E-005
<br>m=1062882   nbr=8939486510984002376284191190453289394865109840023762841911904532

le calcul des modulo est donc insignifiant comparer au calcul des puissance

et le code toujours pour ceux que ça interresse :

function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

$e = 33;
$n = 12;
while($n>0){
$e = bcmul($e,2);

$begintime = microtime_float();
bcpow(2345,$e);
echo "\r\n<br>e=$e \t nbr=2345 \t time=".(microtime_float()-$begintime);

$begintime = microtime_float();
bcpow(23,$e);
echo "\r\n<br>e=$e \t nbr=23 \t time=".(microtime_float()-$begintime);

$n--;
}

echo "\n\r<br>\n\r";

$begintime = microtime_float();
$n = 12;
$m=2;
while($n>0){
$m=bcmul($m,3);

$begintime = microtime_float();
bcmod(89394865109840023762841911904532,$m);
echo "\r\n<br>m=$m \t nbr=89394865109840023762841911904532 \t time=".(microtime_float()-$begintime);

$begintime = microtime_float();
bcmod(8939486510984002376284191190453289394865109840023762841911904532,$m);
echo "\r\n<br>m=$m \t nbr=8939486510984002376284191190453289394865109840023762841911904532 \t time=".(microtime_float()-$begintime);

$n--;
}

mais ça m'interresserait quand même d'avoir les formules pour vraiment optimiser le truck... surtout pour les puissances en fait :D

PS: résultat sur un P4 3.0GHz HT donc moin rapide qu'un serveur je suppose (parce que apache utilise qu'un seul processeur... :nono: )

Modifié par xorax
Posté
PS: résultat sur un P4 3.0GHz HT donc moin rapide qu'un serveur je suppose (parce que apache utilise qu'un seul processeur... :nono: )

<{POST_SNAPBACK}>

Enfin un serveur n'est pas nécessairement multi processeur

et ton script PHP ne peut pas bénéficier de la puissance d'un envirronement multiprocesseur car ton script s'éxecute dans un et unique thread.

Je ne pense pas que le calcul de puissance soit un bon exemple de code parralélisable

Ensuite ton P4 3.0GHz HT, fait croire au système la présence de 2 processeurs donc tu pourras vérifier en lançant ton script en checkant le moniteur systeme si il y a de l'activité sur les 2 processeurs logiques

si tu veux faire du code multi-theadé, faudra passer à autre chose que du PHP

Posté

C'est intéressant, mais...

Le problème est que l'on ne sait pas s'il n'y avait pas autre chose à tourner en même temps, sur l'un ou sur l'autre.

Il y a toujours quantité de programmes qui tournent en routine sur un pc/serveur, et si le test ne prend pas en compte les différents process qui tournent pendant le test, alors on ne peut comparer.

Php n'est pas reconnu pour être le plus rapide, il y a quantité de choses pour lesquels il n'est pas aussi rapide qu'un langage machine. Il ne sert à mon avis à rien de faire des courses avec php, il n'est pas fait pour ca.

Enfin, la plupart des programmes écrits pour le web ne sont pas optimisés. En optimisant son programme, on obtient des valeurs du simple au double. Les serveurs les plus rapides ne sont pas ceux qui hébergent les scripts les plus optimisés, loin de là.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...