]]>
]]>
Рейтинг@Mail.ru

Пустая строка (php)

Материал из Веб программирование.

Перейти к: навигация, поиск

Если при работе со строками у вас возникла необходимость проверить пустая ли строка, начинающие прогера используют как правило функцию strlen(). Эта функция достаточно быстра, потому что не производит никаких вычислений, а просто возвращает уже известное значение длины строки, доступное в zval (в PHP для хранения переменных используется структура C). Но все-таки, т.к. strlen() - это функция, она немного медленная, потому что требует при вызове нескольких действий, таких как перевод в нижний регистр и поиск в таблице хэша. В некоторых случаях вы можете увеличить скорость выполнения вашего кода при помощи использования empty()..., но и empty() еще можно немного оптимизировать.


Возмем пример например проверка пути картинок, функция проверяет если путь пустой то заменяем на другой путь к примеру "images/noimage.jpg".

И так задача вся сводится в проверке пустая ли переменая типа строка. Попробуем 4 способа:

  • if(strlen($img_path)>0)
  • if($img_path{0})
  • if(empty($img_path))
  • и еще один способ на последок.

И так напишем первым способом:

Function check_image_path($img_path)
{
  if(strlen($img_path)>0) 
  {
    $img_path = "images/noimage.jpg";
  }
  return $img_path; 
}

проведем тестирование, среднее время теста заняло 1.43795800209 сек.

Еще немного подумав... Можно обращаться сразу к первому символу строки, а не ко всей строке. Если первый символ есть значит строка не пустая. Первый символ в строке нумируется с "0".

Function check_image_path($img_path)
{
  if($img_path{0})
  {
    $img_path = "images/noimage.jpg";
  }
  return $img_path; 
}

среднее время теста заняло 1.19431300163 сек., 17% времени отыграли


Попробуем написать через empty() теперь:

Function check_image_path($img_path)
{
  if(empty($img_path))
  {
    $img_path = "images/noimage.jpg";
  }
  return $img_path;
}

среднее время теста заняло 1.1341319084 сек., 5% времени отыграли от предедущего примера

Теперь посмотрим на предпоследний и последний пример над нами. Посмотрим как это можно объединить. подумайте... как оптимизировать можно еще?

Function check_image_path($img_path)
{
  if(empty($img_path{0}))
  {
    $img_path = "images/noimage.jpg";
  }
  return $img_path;
}

среднее время теста заняло 1.07465314865 сек., и опять 5% времени выйграли...

Как же это работает и почему быстрей. А вот $img_path{0} возращяет первый символ... и затем функция empty() проверяет пустую строку... разница от предедущего примера в том что функции передается только один символ, а не вся строка. Таким образом от первого примера до последнего мы выйграли 25% времени.

]]>
Google+
]]>
Личные инструменты
Хочешь еще цитату? Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью.Линус Торвальдс
веб-программирование
Просмотры
чтим

Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/webproger/data/www/webproger.ru/1c6a72389c0fd92079ac7ae7cd356173/sape.php on line 218 Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/webproger/data/www/webproger.ru/1c6a72389c0fd92079ac7ae7cd356173/sape.php on line 224

]]>
Rambler's Top100
]]>
]]>
]]>