LINUX.ORG.RU

профайлинг и Joostina!


0

0

Поставили тут 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========================

Ты ничего не понимаешь, это глобальный и надежный код - "как язык он [пхп] очень хорош" (c) svyatogor

anonymous
()
29 апреля 2008 г.

Дружище, ты код из Joomla Lavra показываешь, в Joostina Нету такого!

anonymous
()
Ответ на: комментарий от anonymous

Такой дрянной заголовок цикла могли и на сях написать влёгкую

for (i=0;i<my_func();i++) - неоднократно встречал.

r_asian ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.