2011-06-07 3 views
0

, который из следующих более эффективен?Является ли get или basename() более эффективным?

  1. Использование функции Встаньте на знак (случайный), например:

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

  2. Сделать лексемы часть URL и разобрать его, например:

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

И действительно, это basename больше e чем использование взрыва или substr(strrchr())?

+8

Пожалуйста, прекратите пытаться оптимизировать вещи, которые не должны быть оптимизированы. – ThiefMaster

+6

«Преждевременная оптимизация - это корень всех злых» (и так далее). Я обещаю вам, что вы никогда не почувствуете никакой разницы между обоими. Выберите тот, который помещается в ваше приложение (дизайн), а не тот, который может сохранить один или два цикла процессора. – KingCrunch

+0

Следуя приведенным выше комментариям, если вы заинтересованы в определении эффективности/производительности блока кода по сравнению с другим на этом уровне * low *, вы всегда можете сравнить его самостоятельно. –

ответ

2

$ _GET, очевидно, более эффективным, так как он не вычисляет что-нибудь

Тем не менее, если вы не планируете вызова, что несколько тысяч раз в сценарии, это ничтожно мало, поэтому используйте все, что вы чувствуете себя лучше работает.

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

0,010

+0

проверка функции basename? WTF – dynamic

+0

Я не знаю, почему это получило бы голосующий голос. Хотя я знаю, что $ _GET будет быстрее, я все же проверил тест, чтобы узнать, сколько. более 1 мил итераций, доступ к $ _GET занял ~ .2 секунды, basename заняло ~ 2 секунды. Довольно многое доказывая то, что я уже знал, что это не имеет значения, потому что, когда дело доходит до вызова одного или нескольких раз, вы говорите о долях миллисекунды. Есть и другие узкие места, которые лучше оптимизируются, чем беспокоиться об этом. –

+0

@ yes123: я не вижу вашей точки. ** что-нибудь ** может быть проверено, почему бы и нет? –

2

Использование basename. Нет необходимости делать еще одну функцию, которая у вас уже есть.

Кроме того, в этом случае производительность является укомплектовать незначителен

0
  1. Не переживайте микро-оптимизации.
  2. Если вы хотите попотеть с помощью микрооптимизаций, довольно просто провести тест №1 против №2 самостоятельно.
  3. Независимо от минимальных различий в производительности, # 2 обычно предпочтительнее, потому что вы получаете дружественный URL-адрес.
+0

Спасибо, я буду держать в виду 3 для будущих веб-сайтов, так как лучшие URL-адреса имеют смысл в качестве причины выбора варианта базового имени. Однако для веб-сайта, на котором я сейчас работаю, я ищу чистую оптимизацию. – user928984

Смежные вопросы