Version complète: sur le forum Webmaster Hub : vitesse de calcul de php
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
xorax
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!
NorSeb
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 wink.gif
xorax
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.
captain_torche
Ou, tout simplement, tu fais un microtime() après chaque instruction.
xorax
oui je vien d'éssayer voilà les résultats pour ceux que ça interresse :

aplication de la formule nbr^e
CODE
<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
CODE
<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 :
CODE
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 biggrin.gif

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: )
bozoleclown
CITATION(xorax @ mardi 21 février 2006, 09h55)
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: )
*


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
Anonymus
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à.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.