Я наткнулся на этот код...
if(isset($string[255])) {
// too long
}
isset() находится между 6 и 40 быстрее, чем
if(strlen($string) > 255) {
// too long
}
Единственным недостатком isset() является то, что код неясен - мы не можем сразу сказать, что делается (см. ответ pekka). Мы можем обернуть isset() в пределах функции, то есть strlt ($ string, 255), но затем мы теряем преимущества isset().
Как мы можем использовать более быструю функцию isset(), сохраняя читаемость кода?
EDIT: тест, чтобы показать скорость http://codepad.org/ztYF0bE3
strlen() over 1000000 iterations 7.5193998813629
isset() over 1000000 iterations 0.29940009117126
EDIT2: вот почему isset() быстрее
$string = 'abcdefg';
var_dump($string[2]);
Output: string(1) "c"
$string = 'abcdefg';
if (isset($string[7])){
echo $string[7].' found!';
}else{
echo 'No character found at position 7!';
}
Это быстрее, чем использование strlen(), потому что "... вызов функции дороже, чем использование языковой конструкции". http://www.phpreferencebook.com/tips/use-isset-instead-of-strlen/
EDIT3: меня всегда учили интересовать mirco-оптимизацией. Наверное, потому, что меня учили в то время, когда ресурсы на компьютерах были крошечными. Я открыт для идеи, что это может быть неважно, есть несколько хороших аргументов против этого в ответах. Я начал новый вопрос, изучая это... https://stackoverflow.com/info/6983208/is-micro-optimisation-important-when-coding