xorax Posté 21 Février 2006 Posté 21 Février 2006 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 Posté 21 Février 2006 Posté 21 Février 2006 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
xorax Posté 21 Février 2006 Auteur Posté 21 Février 2006 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 Posté 21 Février 2006 Posté 21 Février 2006 Ou, tout simplement, tu fais un microtime() après chaque instruction.
xorax Posté 21 Février 2006 Auteur Posté 21 Février 2006 (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 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... ) Modifié 21 Février 2006 par xorax
bozoleclown Posté 21 Février 2006 Posté 21 Février 2006 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... ) <{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
Anonymus Posté 22 Février 2006 Posté 22 Février 2006 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à.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant