<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webbricks &#187; wydajność</title>
	<atom:link href="http://blog.grzegorzpawlik.com/tag/wydajnosc/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.grzegorzpawlik.com</link>
	<description>Doświadczenie, to coś, co zdobywamy tuż po chwili w której było nam potrzebne ...</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:09:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Przyspieszyć cake 1.1.x</title>
		<link>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 20:12:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.1]]></category>
		<category><![CDATA[wydajność]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=60</guid>
		<description><![CDATA[Przy okazji usprawnień dla portalu dobrzemieszkaj.pl i zabawy z xdebug.profiler udało mi się znaleźć ciekawe wąskie gardło w cakePHP. Niestety jego usunięcie wymaga ingerencji w core frameworku, ale z uwagi na to, że wersja 1.1 nie będzie już rozwijana, a &#8230; <a href="http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Przy okazji usprawnień dla portalu <a href="http://dobrzemieszkaj.pl/">dobrzemieszkaj.pl</a> i zabawy z xdebug.profiler udało mi się znaleźć ciekawe wąskie gardło w cakePHP.<br />
Niestety jego usunięcie wymaga ingerencji w core frameworku, ale z uwagi na to, że wersja 1.1 nie będzie już rozwijana, a do tego przy tak zaawansowanym poziomie prac nad portalem na pewno nie będziemy migrować do żadnej innej nowiści &#8211; uważam, że można było sobie pozwolić na grzebanie w core.</p>
<p><span style="font-size: large;">O co chodzi?</span><br />
Konstruktor modelu wywołuje metodę Model::setSource(), która przede wszystkim sprawdza, czy wśród wszystkich tabel jest ta, z którą powiązany jest dany model. W portalu na stronie głównej było ok 50 wywołań konstruktorów modeli, a co za tym idzie- również Model::serSource.</p>
<p>Wszystko byłoby w porządku, gdyby nie to, że ta funkcja zabezpiecza się przed przypadkiem niestosowania się w 100% do konwensji cake. Dlatego wszystkie elementy (nazwy tabel) traktowała funckją strtolow().</p>
<p>Z uwagi na to, że w naszym projekcie jest 150 tabel, to przebiegnięcie po tablicy 150 stringów i zamiana na lowercase odbywała się 50 razy, czy razem było&nbsp; 750 stringów było zamienianych na lowercase. Sęk w tym, że operacja nie była potrzebna, gdyż wszystkie nasze tabele są lowercase.<br />
Dlatego dobrą opcją było zamiana cake/libs/model/model_php5.php:523 z<br />
<code lang="php"><br />
if (is_array($sources) &amp;&amp; !in_array(low($prefix . $tableName), array_map('low', $sources))) {<br />
</code><br />
na<br />
<code lang="php"><br />
if (is_array($sources) &amp;&amp; !in_array($prefix . $tableName,&nbsp; $sources)) {<br />
</code><br />
proste jak budowa cepa, a ubyło kolejne ćwierć sekundy na generowanie strony :)</p>
<p>W prawdzie nie jest to oszołamiające przyspieszenie, ale przy bardzo wielu zapytaniach na raz &#8211; przydatne.</p>
<p>Edit: członkini teamu cake <strong>Jitka Koukalova</strong> potwierdziła, że ten fragment kodu jest obejściem, dzięki któremu cake działa również z php4. Twierdzi też, że to jeden z wielu elementów, bez których cakePHP będzie działał szybciej, ale tylko na php5. </p>
<blockquote><p>You discovered one of many workarounds which are necessary for PHP4. <br />
It is just one of many things which will make PHP5 only CakePHP much <br />
faster.   </p></blockquote>
<p>Nic tylko dalej szukać i usprawniać ;)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

