Нужен совет PHPшников

12
W7
На сайте с 05.02.2009
Offline
99
872

У меня есть функция:

function check_remote_image($url) {

$ok = @get_headers( $url );
$ok = preg_match("|200|", $ok[0]);
return $ok;
}

Если немного по шаманить то можно сократить её:

function check_remote_image($url) {

$ok = @get_headers( $url );
return preg_match("|200|", $ok[0]);
}

Какой способ луче юзать? Я так понимаю здесь разница будет в миллисекундах, так как в первом варианте нам нужно записать данные в переменную и потом их возвращать, а во второй мы сразу возвращаем.

Это может как то влиять на процесс?

A
На сайте с 29.12.2007
Offline
68
#1

Не надо экономить на спичках...

RO
На сайте с 13.07.2009
Offline
88
#2

почему бы и нет? как опытный говнокодер смело могу заявить

второй вариант лутше юзать, а если хотим секономить есче пару "спичек" модифицируем до такого вида:


function check_remote_image($url) {
$ok = @get_headers($url);
return strpos($ok[0],'200');
}
T
На сайте с 01.10.2004
Offline
73
#3

Тогда иэ так:


function check_remote_image($url) {
return ($ok = get_headers($url))?strpos($ok[0],'200'):false;
}

Но данная оптимизация бессмыслена с практической точки зрения.

По сравнению с временем на соединение в get_headers(), время работы preg_match и strpos - ничто.

RO
На сайте с 13.07.2009
Offline
88
#4

telo, мы не о глобальной оптимизации скрипта, а о спичках.

[Удален]
#5

мне почему то кажется что пхп в любом случае бует создавать переменную для результата любого действия, ведь ему при вызове функции надо кудато ссылаться ;)

то есть

$ok = lal();

return $ok;

и return lalal();

равносильны, другое дело что ей имя не надо присваивать (а адресация все равно идет врядли по именам :) ), он просто становится еще одной "лямбда переменной". другое дело что второй вариант в десятки раз очевиднее с первого взгляда, так как человеку, читающему код становится МОМЕНТАЛЬНО понятно, что мы проверяем на соответствие РЕГУЛЯРКЕ |200|, а не другой переменной $regex(это я к примеру) и хотим результат этой проверки вернуть.

function check_remote_image($url) {
$ok = @get_headers( $url );
return preg_match("|200|", $ok[0]);
}

вот такой вариант с точки зрения "очевидности" для меня бы стал еще боле проще

function check_remote_image($url) {
return strpos("200", array_shift(@get_headers( $url )));
}

но при условии что 200 не в начале заголовков

function check_remote_image($url) {
return strpos("200", array_shift(@get_headers( $url ))) !== false;
}

ну и этот если уж учитывать, что 200 может быть и в начале :)

T
На сайте с 01.10.2004
Offline
73
#6
bearman:
return strpos("200", @get_headers( $url )) !== false;

Нельзя так. get_headers( $url ) возвращает массив. Потому и надо в переменную создавать, так как PHP не разрешает использовать конструкции вида func()[$index].

[Удален]
#7

telo, ах, я [0] незаметил :) вы правы.


function check_remote_image($url) {
return strpos("200", array_shift(@get_headers( $url )));
}

ну вы поняли все равно что я хотел сказать )

bearman добавил 16.03.2010 в 10:09

telo:
не разрешает использовать конструкции вида func()[$index]

это кстати имхо наитупейшее их "произведение мысли" ...

[Удален]
#8

Странно. Почему-то многие php-программисты заботятся о быстродействии и памяти, но при этом совершенно не думают о последующем удобстве отладки либо жертвуют им во имя быстродействия. А потом, когда получается несколько десятков тысяч строк вида

function check_remote_image($url) {  

return ($ok = get_headers($url))?strpos($ok[0],'200'):false;
}

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

T.R.O.N
На сайте с 18.05.2004
Offline
314
#9
autosubmit:
Почему-то многие php-программисты

ну с этим все просто. Проблема не в языке, а в том, что он стал так-же популярен как пончики, и так-же доступен. Купил книженку, почитал, и уже программер. А увидел какойнить г..но-фреймворк, который за 10 минут позволяет сделать супер-пупер-CMS - уже крутой программер

язык, методики программирования, оформление кода и т.д. это самостоятельные области знаний, которым учат и учат долго.

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
[Удален]
#10
autosubmit:
они ищут багии вносят изменения в разы дольше, чем искали бы с многократно более простой, но чуть менее эффективной конструкцией.

расставьте пробелы, выпейта чайку с печенькой и может быть тогда вы удалите ваш пост :)

эта "строчка" средней слабой тяжести, в ней ничего сложного для 2 секундного взгляда нет

bearman добавил 16.03.2010 в 11:33

T.R.O.N:
которым учат и учат долго.

и больно =)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий