PHP performance hints. Александр Веремьев (Zend Framework core team)
2 Передача строк по ссылке
3 function test1($str) { $chCounter = 0; for ($count = 0; $count < strlen($str); $count++) { if ($str[$count] == '4') $chCounter++; } return $chCounter; }
4 Передача строк по ссылке function test2(&$str) { $chCounter = 0; for ($count = 0; $count < strlen($str); $count++) { if ($str[$count] == '4') $chCounter++; } return $chCounter; }
5 Передача строк по ссылке Размер строки (Мб)test1() (сек)test2() (сек)
6 Циклические ссылки
7 Циклические ссылки в структурах объектов Object 3Object 1Object 2 Object 4 Object 5 $var1
8 Циклические ссылки в структурах объектов unset($var1); Object 3Object 1Object 2 Object 4 Object 5 $var1
9 Циклические ссылки в структурах объектов unset($var1); Object 3Object 1Object 2 Object 4 Object 5 $var1
10 Циклические ссылки в структурах объектов $var1Object 3Object 1Object 2 Object 4 Object 5 proxy
11.= оператор
12.= оператор и обработка больших строк $str = ''; while ($condition) {... $str.= $something; }
13.= оператор и обработка больших строк $str = ''; while ($condition) {... $str.= $something; }
14.= оператор и обработка больших строк $str = ''; while ($condition) {... $str.= $something; }
15.= оператор и обработка больших строк $str = ''; while ($condition) {... $str.= $something; }
16.= оператор и обработка больших строк $str = ''; while ($condition) {... $str.= $something; }
17.= оператор и обработка больших строк $substrings = array(); while ($condition) {... $substrings[] = $something; } $str = implode($substrings);
18 Неэффективность serialize()/unserialize()
19 Неэффективность serialize()/unserialize() array(134, 'test stri\'ng', array('float test', ), 456) => a:4:{i:0;i:134;i:1;s:12:"test stri'ng";i:2;a:2:{i:0;s:10:"float test";i:1; d: ;}i:3;i:456;}
20 Неэффективность serialize()/unserialize() array(134, 'test stri\'ng', array('float test', ), 456) => a:4:{i:0;i:134;i:1;s:12:"test stri'ng";i:2;a:2:{i:0;s:10:"float test";i:1; d: ;}i:3;i:456;} array(134, 'test stri\'ng', array('long test', ), 456) => a:4:{i:0;i:134;i:1;s:12:"test stri'ng";i:2;a:2:{i:0;s:9:"long test";i:1; i: ;}i:3;i:456;}
21 Ручной method inlining
22 Замена объектов массивами
23 Вопросы Александр Веремьев