2011-06-07 4 views
0

lequel des éléments suivants est le plus efficace?Est-ce que get ou basename() est plus efficace?

  1. En utilisant une fonction get sur un jeton (aléatoire), par exemple:

    http://www.example.com/category/subcategory/subsubcategory?value=random $_GET['value']

  2. Faire la partie symbolique de l'URL et l'analyse syntaxique, par exemple:

    $url="http://www.example.com/category/subcategory/subsubcategory/random" basename($url)

Et en fait, le nom de base est plus e Fficient que d'utiliser exploser ou substr(strrchr())?

+8

S'il vous plaît arrêter d'essayer d'optimiser les choses qui ne ont pas besoin d'être optimisé. – ThiefMaster

+6

"L'optimisation prématurée est la racine de tous les maux" (et ainsi de suite). Je vous promets que vous ne sentirez jamais de différence entre les deux. Choisissez celui qui correspond à votre application (design), pas celui qui peut sauver un ou deux cycles de cpu. – KingCrunch

+0

Suite aux commentaires ci-dessus, si vous souhaitez déterminer l'efficacité/la performance d'un bloc de code par rapport à un autre niveau * bas *, vous pouvez toujours le comparer vous-même. –

Répondre

2

$ _GET est évidemment plus efficace, car il ne calcule rien

encore, à moins que vous prévoyez d'appeler que quelques milliers de fois dans votre script, il est négligeable si l'utilisation que vous sentez fonctionne mieux.

$t = microtime(true); 
for($i = 0; $i<1000; $i++) { 
    $x = basename($url); 
} 
printf("%.3f\n", microtime(true) - $t); 

0,010

+0

tester la fonction basename? WTF – dynamic

+0

Je ne sais pas pourquoi cela aurait un vote négatif. Même si je sais que $ _GET serait plus rapide, j'ai quand même fait un test pour voir combien. plus de 1 million d'itérations, l'accès à $ _GET a pris ~ .2 secondes, le nom de base a pris ~ 2 secondes. Pratiquement prouvant ce que je savais déjà, cela n'a pas d'importance, parce que quand il s'agit d'appeler l'une ou l'autre fois, vous parlez des fractions de milliseconde. Il y a d'autres goulots d'étranglement qui seraient mieux optimisés que de s'inquiéter à ce sujet. –

+0

@ yes123: je ne vois pas votre point. ** n'importe quoi ** peut être testé, pourquoi pas? –

2

Utilisez basename. Il n'y a pas besoin de faire une autre fonction que vous avez déjà.

également dans ce spectacle de cas est insignifiante completly

0
  1. Ne pas transpirer les micro-optimisations.
  2. Si vous voulez faire des micro-optimisations, il est assez trivial de tester vous-même les n ° 1 et n ° 2.
  3. Indépendamment des différences de performances minimales, le n ° 2 est généralement préféré car vous obtenez une URL conviviale.
+0

Merci, je garderai le numéro 3 à l'esprit pour les futurs sites Web, car les URL les plus attrayantes sont une bonne raison de choisir l'option basename. Cependant, pour le site sur lequel je travaille actuellement, je recherche une optimisation pure. – user928984

Questions connexes