optimisation : strcmp() ou intval()+comparaison ?

optimisation : strcmp() ou intval()+comparaison ? - PHP - Programmation

Marsh Posté le 27-07-2009 à 17:16:48    

Bonjour,
 
Je souhaite comparer deux dates. Elles sont stockées sous forme de timestamp dans un fichier texte.
 
Par exemple 1248704795 et 1248706343.
 
Est-il plus rapide de comparer les chaines avec strcmp, où bien de les convertir en int puis de les comparer avec > ou < ?
 
Merci d'avance  :hello:

Reply

Marsh Posté le 27-07-2009 à 17:16:48   

Reply

Marsh Posté le 27-07-2009 à 17:23:29    

je dirais en int, puisque la valeur passe

Reply

Marsh Posté le 27-07-2009 à 17:36:26    

Qu'est-ce que tu veux dire par là ?

Reply

Marsh Posté le 27-07-2009 à 20:08:03    

dans le sens ou ca passe dans les 32 bits de l'integer, meme si c'est pas loin puisque la valeur max c'est 2147483647,   si ca avait eté au dessus je pense quand str ca aurai eté mieux, a voir apres...

Reply

Marsh Posté le 29-07-2009 à 21:08:06    

Tu es absolument sûr que cette optimisation est importante ?

 

Si ce n'est pas le cas, choisit le plus lisible/pratique.

 

Premature optimization is at the root of all evil, disait le sage :o


Message édité par theredled le 29-07-2009 à 21:08:39

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 30-07-2009 à 10:20:28    

Oui, bien sûr, je n'y gagnerai pas beaucoup.
Mais j'aime bien connaitre la meilleure solution quand deux solutions me paraissent équivalentes  ;)

Reply

Marsh Posté le 30-07-2009 à 13:10:27    

Pascal le nain a écrit :

Oui, bien sûr, je n'y gagnerai pas beaucoup.
Mais j'aime bien connaitre la meilleure solution quand deux solutions me paraissent équivalentes  ;)


Ok, seulement la performance n'est pas le seul critère de choix, c'est même souvent le plus mauvais.
 
En l'occurence, tu as deux nombres, donc les comparer avec <> me parait le plus logique. Même pas besoin de les transformer en int, ça va se faire implicitement.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 30-07-2009 à 14:34:50    

T'optimises rien du tout là en fait.

Reply

Marsh Posté le 30-07-2009 à 14:39:36    

theredled a écrit :


Ok, seulement la performance n'est pas le seul critère de choix, c'est même souvent le plus mauvais.


 
Ah ? Quel est le critère le plus important alors ? Je suis curieux de ta réponse.
La simplicité ? Oui, c'est utile quand on remanie le code, mais une fois le code fixé, il est toujours utile d'optimiser un max.
 

Taz a écrit :

T'optimises rien du tout là en fait.


 
Aucune idée, c'est bien pour ça que je pose la question  ;)

Message cité 1 fois
Message édité par Pascal le nain le 30-07-2009 à 14:40:02
Reply

Marsh Posté le 30-07-2009 à 14:40:16    


Le bourreau de la cat C ya 5 ans [:totoz]


Message édité par theredled le 30-07-2009 à 14:40:38

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 30-07-2009 à 14:40:16   

Reply

Marsh Posté le 30-07-2009 à 14:42:58    

Pascal le nain a écrit :

 

Ah ? Quel est le critère le plus important alors ? Je suis curieux de ta réponse.
La simplicité ? Oui, c'est utile quand on remanie le code, mais une fois le code fixé, il est toujours utile d'optimiser un max.

 


 

- Lisibilité
- Maintenabilité
- Eventuellement, évolutivité dans le temps

 

Un code n'est jamais "fixé", ça existe pas ça.
Si tu veux vraiment tout optimiser, utilise un cache d'op-code, ou fait ton site en assembleur...

 

Après ouais, tu peux optimiser des parties de ton code, les trucs que tu mesures clairement comme trop lents, typiquement les requêtes SQL, mais c'est tout, le reste, la micro-optimisation, ça sert juste à te faire perdre le temps que tu pourrais passer au cinéma avec ta copine.


Message édité par theredled le 30-07-2009 à 14:47:02

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 31-07-2009 à 16:56:10    

oh detrompe toi, le micro optimisation peu faire gagner de temps, j'ai pas d'exemple en PHP,
 
mais en Actionscript, pour convertir un bitmap en jpeg,  
 
mettre les données dans un Vector plutot qu'un Array
et faire de la préincrmentation plutot que de la post   dans les boucle
 
faisais gagné 1.5x  sur le temps du script, ce qui est pas négligeable,
 
bon apres c'est juste un exemple qui fonctionne ;)
 
mais de te rejoins sur le systeme de cache,  
 
faire un systeme de cache, qui creer un fichier HTML fixe toute les 30 min, ca fait beaucoup gagner de temps
 

Reply

Marsh Posté le 08-08-2009 à 15:11:22    

Oui ya des cas où la micro-optimisation est utile, mais dans 99.999% des cas, non, et elle est même préjudiciable.

 

Et surtout, elle vient à la fin, quand on sait précisément pourquoi on la fait, pas a priori, "au cas où".

 

Là tu prends un exemple où une même boucle est réellement exécutée des millions de fois, pour des durées très courtes à chaque fois, donc oui ça peut être déterminant. Mais c'est marginal ce genre de trucs en AS, comme dans n'importe quel langage. C'est le domaine des parseurs ou des calculateurs de sommes énormes de données, et en plus la plupart ont déja été codés par d'autres depuis longtemps et réutilisables. D'ailleurs un convertisseur BMP/JPG en AS, je veux bien être sûr que ça n'existe pas déja.

 

Qui plus est, gagner d'un facteur 1.5, c'est bien, mais si c'est sur 50ms et utilisé ponctuellement, c'est négligeable. Après je connais pas le contexte de ton convertisseur.


Message édité par theredled le 08-08-2009 à 15:17:02

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed