2010-07-12 5 views
0

J'ai une variable globale qui est $ VARcurrenttime = time(); alors j'appelle normalement cette variable quand je calcule quelque chose avec cet horodatage (ce qui est beaucoup). Quelqu'un m'a suggéré que l'utilisation de time() à la place de la variable serait un peu plus rapide. Je ne sais pas vraiment, mais quelqu'un pourrait-il me dire si je changerais cela ou pas?

+3

Si vous pensez vraiment que c'est quelque chose dont vous devriez vous préoccuper, alors vous devriez google 'optimisation préemptive' et devenir éclairé. Si vous songez à ces types de détails de performances, vous devriez également penser aux gains de performance que vous pouvez obtenir en utilisant simplement un langage compilé au lieu de quelque chose comme PHP. – Shirik

+1

Sauf si vous continuez à le mettre à jour (ce qui semblerait aller à l'encontre de son objectif), votre variable globale restera constante pendant que votre application traite. c'est ce que tu veux? – Mike

+0

@Shirik ont-ils supprimé les upvotes sur les commentaires? Considérez ceci comme un +1 de toute façon. –

Répondre

5

Ce:

/* Real-World Time is 2010/01/01 12:00:00 */ 
$var = time(); /* $var = 2010/01/01 12:00:00 */ 
$a = doSomething($someOtherVar, $var); /* Passes 2010/01/01 12:00:00 */ 
$b = doSomething($someOtherVar, $var); /* Passes 2010/01/01 12:00:00 */ 
$c = doSomething($someOtherVar, $var); /* Passes 2010/01/01 12:00:00 */ 
/* Real-World Time is 2010/01/01 12:00:40 */ 

prend presque exactement la même chose, mais très -Légèrement moins temps que ceci:

/* Real-World Time is 2010/01/01 12:00:00 */ 
$a = doSomething($someOtherVar, time()); /* Passes 2010/01/01 12:00:00 */ 
$b = doSomething($someOtherVar, time()); /* Passes 2010/01/01 12:00:07 */ 
$c = doSomething($someOtherVar, time()); /* Passes 2010/01/01 12:00:23 */ 
/* Real-World Time is 2010/01/01 12:00:40 */ 

mais il est aussi très différente, car même si le réel le temps du monde pour les deux est à peu près le même, on saisit la dernière fois chaque appel. En fonction de vos besoins, ceci est soit souhaitable, soit indésirable. Comme time() doit calculer quelque chose (même s'il ne s'agit que d'une recherche de système), je vais supposer qu'il est plus lent que de référencer une variable, mais la différence va être si proche de négligeable qu'elle est ne vaut pas la peine de s'inquiéter de ce qui est le plus important est de savoir si vous avez besoin d'utiliser le même horodatage plusieurs fois ou l'heure actuelle plusieurs fois? L'analogie du monde réel consiste à comparer l'heure et à regarder ce numéro chaque fois que quelqu'un vous demande «quelle heure est-il» ou vérifie-t-il une montre. Ils vont prendre environ le même temps mais donner des réponses très différentes.

Finalement, vous comparez les vitesses de deux choses complètement différentes. Vous ne comparez pas les vitesses de deux façons de faire la même chose. C'est comme si je vous demandais, ce qui est plus rapide - prendre un avion à l'étranger ou conduire une voiture pour votre travail. La réponse est que l'un est plus rapide, mais ils font des choses complètement différentes.

+0

Oui, ce n'est pas clair à la question. – Himadri

1

Votre ami a tort.

  • La variable stocke le résultat de la fonction, ce qui en fait une lecture directe.
  • La fonction doit calculer la valeur chaque fois qu'elle est appelée, ce qui prend plus de temps. (Le temps exact requis en fonction de ce que fait la fonction.)