Поставили тут Xdebug решили поискать "бутылочные горлышки". На одном из серваков сидит пречудесная "Joostina CMS - свежий взгляд на Joomla!"(http://www.joostina.ru/) Дык вот: топ3 по кол-ву вызовов за 2541мс: 1. php:strlen 145321 calls 2. php:ord 142983 calls 3. php:substr 6243 calls Оказалось что вызовы в функциии: pofigu() из которой вызываются 2 чудесные функции: pofig() и ne_pofig() o_O авторы жгут, взгляд у них действительно свежий =) =======================>8======================== function pofig($Str) { for ($i=0; $i<strlen($Str); $i++) { if (ord($Str[$i]) < 0x80) $n=0; # 0bbbbbbb elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb elseif ((ord($Str[$i]) & 0xF0) == 0xF0) $n=3; # 1111bbbb else return false; # Does not match any model for ($j=0; $j<$n; $j++) { # n octets that match 10bbbbbb follow ? if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) return false; } } return true; } function ne_pofig ($s){ $out=""; $c1=""; $byte2=false; for ($c=0;$c<strlen($s);$c++){ $i=ord($s[$c]); if ($i<=127) $out.=$s[$c]; if ($byte2){ $new_c2=($c1&3)*64+($i&63); $new_c1=($c1>>2)&5; $new_i=$new_c1*256+$new_c2; if ($new_i==1025){ $out_i=168; }else{ if ($new_i==1105){ $out_i=184; }else { $out_i=$new_i-848; } } $out.=chr($out_i); $byte2=false; } if (($i>>5)==6) { $c1=$i; $byte2=true; } } return $out; } function pofigu($s) { if (pofig($s)) { $s = ne_pofig ( $s ); } return $s; } =======================>8========================
29 апреля 2008 г.
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Преобразовать javascript-код в php (2011)
- Форум Вывод на текстовый экран с Raspberry Pi (2016)
- Форум Оптимизация в clang (2018)
- Форум Выдержит ли SQLite нагрузку уровня linux.org.ru? (2022)
- Форум PJSIP: нет звука (2017)
- Форум Появляется NoneType объект treeview path Gtk3 + Python3 (2019)
- Форум Найти ошибку в php скрипте (2016)
- Форум g++ expects argument (2013)
- Форум язычок вот написал (2020)
- Форум Node REPL, vim и костыли (2019)