<?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>BBProject.net &#187; Laboratorium</title>
	<atom:link href="http://www.bbproject.net/category/laboratorium/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bbproject.net</link>
	<description>Programowanie, webmastering, informatyka</description>
	<lastBuildDate>Mon, 26 Jul 2010 08:03:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Jak wygląda JPEG po 100 000 rekompresji?</title>
		<link>http://www.bbproject.net/2010/05/jak-wyglada-jpeg-po-100-000-rekompresji/</link>
		<comments>http://www.bbproject.net/2010/05/jak-wyglada-jpeg-po-100-000-rekompresji/#comments</comments>
		<pubDate>Sat, 01 May 2010 07:38:26 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Laboratorium]]></category>
		<category><![CDATA[artefakty]]></category>
		<category><![CDATA[grafika]]></category>
		<category><![CDATA[jakość]]></category>
		<category><![CDATA[jpeg]]></category>
		<category><![CDATA[jpg]]></category>
		<category><![CDATA[kompresja]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=305</guid>
		<description><![CDATA[Z cyklu „moje szalone eksperymenty”, czyli co się dzieje z obrazem  zapisanym w formacie JPEG, jeśli będziemy go ciągle otwierać i zapisywać. Do tego doświadczenia posłużyłem się napisanym specjalnym programem który kolejno, aż do znudzenia, otwierał i zapisywał do JPG&#8217;a ten sam obraz. I tak 100 000 razy. Nie wchodziłem zbytnio w optymalizację na ten [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-306" title="JPEG - 100%" src="http://www.bbproject.net/wp-content/uploads/2010/04/jpeg100-160x119.jpg" alt="" width="160" height="119" />Z cyklu „moje szalone eksperymenty”, czyli co się dzieje z obrazem  zapisanym w formacie JPEG, jeśli będziemy go ciągle otwierać i zapisywać.</p>
<p>Do tego doświadczenia posłużyłem się napisanym specjalnym programem który kolejno, aż do znudzenia, otwierał i zapisywał do JPG&#8217;a ten sam obraz. I tak 100 000 razy. Nie wchodziłem zbytnio w optymalizację na ten jeden raz, stąd też nieco to trwało.</p>
<p>Pewnie myślicie że po kilkunastu takich operacjach z pierwotnego zdjęcia została sieczka? Prawdę mówiąc też tak myślałem. Jakież było moje zdziwienia gdy się okazało że praktycznie <strong>nic się nie zmienia</strong>! Ale gdyby to był końcowy wniosek, wpis ten był by nudny, poszedłem zatem o krok dalej <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_cool.png' alt='8)' class='wp-smiley' /> .</p>
<p><span id="more-305"></span>Początkowo po prostu prowadziłem rekompresje obrazu zapisując go za każdym razem w tej samej jakości. I tak jak wyżej wspomniałem, jakość zdjęcia nie pogarszała się wraz z kolejnymi iteracjami &#8211; cały czas pozostawała na określonym poziomie wynikającym ze obranego stopnia kompresji.</p>
<p>Dlaczego tak się dzieje? Wynika to wprost z algorytmu JPEG. W <strong>dużym</strong> uproszczeniu, polega on na zmianie obrazu w drobne gradienty które najlepiej oddają dany fragment rysunku &#8211; w zależności od stopnia kompresji są one mniej lub bardziej widoczne. Więcej na ten temat można przeczytać na stronach <a href="http://pl.wikipedia.org/wiki/JPEG">Wikipedii</a>.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-307" title="JPEG - 1%" src="http://www.bbproject.net/wp-content/uploads/2010/04/jpeg001.jpg" alt="" width="313" height="234" /><br />
<em>Poziom jakości 1%, widoczne artefakty</em></p>
<p>I tak, po pierwszym zapisaniu z formatu źródłowego algorytm JPEG stosuje  stratną kompresję zamieniając nasze zdjęcie w owe gradienty. Jeśli  powtórzymy tą operację na skompresowanym już JPG&#8217;u, to sytuacja powtarza  się, z tą tylko różnicą że nie ma już co zmieniać gdyż obraz poddawany  kompresji wpasowuje się idealnie w to co zrobił by algorytm JPEG (a co  uczynił przy poprzednim zapisie).</p>
<p>Dlatego właśnie, wraz z kolejnymi zapisaniami nie tracimy nic na jakości. Oczywiście pod warunkiem że nic nie zmieniamy na obrazku, oraz za każdym razem stosujemy ten sam stopień kompresji! Jednakże jest to sztuka dla sztuki, po co zapisywać jak nic się nie zmienia?</p>
<p>Nie do końca tak jest. Jeśli wykonamy operację które nie naruszają w sposób stratny zawartości rysunku (np.: zamalowanie twarzy) to możliwe jest ponowne zapisanie bez straty jakości. Do operacji takich zaliczyć możemy obrót o 90 stopni, bądź odbicie w pionie/poziomie. Stąd też właśnie, wbudowana w system Windows przeglądarka obrazów potrafi dokonywać rotacji bez uszczerbku na jakości zdjęcia.</p>
<h4>Pamiętaj chemiku młody&#8230;</h4>
<p>Tak jak mówiłem, powyższy wniosek jest nudny <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> . Idąc krok dalej, postanowiłem przeprowadzić cały eksperyment jeszcze raz ale tym razem zmieniając poziom jakości kompresji losowo między 95% a 100% &#8211; zmieniając tym samym warunki pracy algorytmu JPEG.</p>
<p>I w tym momencie zaczyna robić się ciekawie. Tutaj faktycznie zaobserwujemy już destrukcję obrazu, zobaczcie sami.</p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena0.jpg"><img class="alignnone size-medium wp-image-308" title="Lena - obraz źródłowy" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena0-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena50.jpg"><img class="alignnone size-medium wp-image-309" title="Lena - 50 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena50-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>Obraz źródłowy i po pierwszych 50 iteracjach</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena100.jpg"><img class="alignnone size-medium wp-image-310" title="Lena - 100 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena100-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena200.jpg"><img class="alignnone size-medium wp-image-311" title="Lena - 200 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena200-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>100 i 200 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena300.jpg"><img class="alignnone size-medium wp-image-312" title="Lena - 300 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena300-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena400.jpg"><img class="alignnone size-medium wp-image-313" title="Lena - 400 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena400-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>300 i 400 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena500.jpg"><img class="alignnone size-medium wp-image-314" title="Lena - 500 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena500-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena750.jpg"><img class="alignnone size-medium wp-image-315" title="Lena - 750 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena750-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>500 i 750 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena1000.jpg"><img class="alignnone size-medium wp-image-316" title="Lena - 1 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena1000-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena1500.jpg"><img class="alignnone size-medium wp-image-317" title="Lena - 1 500 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena1500-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>1 000 i 1 500 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena5000.jpg"><img class="alignnone size-medium wp-image-318" title="Lena - 5000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena5000-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena10000.jpg"><img class="alignnone size-medium wp-image-319" title="Lena - 10 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena10000-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>5 000 i 10 000 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena25000.jpg"><img class="alignnone size-medium wp-image-320" title="Lena - 25 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena25000-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena50000.jpg"><img class="alignnone size-medium wp-image-321" title="Lena - 50 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena50000-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>25 000 i 50 000 iteracji</em></p>
<p>Jak widać, początkowo proces przebiega bardzo szybko. Im dalej, tym więcej powtórzeń potrzeba aby dostrzec jakie zachodzą zmiany w obrazie.</p>
<p>Wszystko wskazuje na to jakoby sytuacji stabilizowała się, jednak w okolicach 50 000 iteracji obserwujemy coś co można nazwać załamaniem się trendu.</p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena50500.jpg"><img class="alignnone size-medium wp-image-322" title="Lena - 50 500 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena50500-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena51000.jpg"><img class="alignnone size-medium wp-image-323" title="Lena - 51 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena51000-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>50 500 i 51 000 iteracji</em></p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena55000.jpg"><img class="alignnone size-medium wp-image-324" title="Lena - 55 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena55000-256x256.jpg" alt="" width="256" height="256" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/04/lena100000.jpg"><img class="alignnone size-medium wp-image-325" title="Lena - 100 000 iteracji" src="http://www.bbproject.net/wp-content/uploads/2010/04/lena100000-256x256.jpg" alt="" width="256" height="256" /></a><br />
<em>55 000 i 100 000 iteracji</em></p>
<p>Pomiędzy 60 000 iteracją a dalszymi, aż do 100 000 obserwowane są oscylacje obrazu, tzn. nie zmienia się on w sposób jak na początku, tylko zachowuje się jak szum, coś się przemieszcza delikatnie ale nic już się nie zmienia. Mówiąc w programistycznym slangu, wygląda to jakby obraz wpadł w nieskończoną pętlę.</p>
<p>Na koniec jeszcze raz to samo, ale zaprezentowane na filmie w przyspieszonym tempie, który bardzo dobrze oddaje tempo zachodzenia zmian.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/tTPliji6n4g&amp;hl=pl_PL&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/tTPliji6n4g&amp;hl=pl_PL&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h4>Podsumowanie</h4>
<p>I to w zasadzie już wszystko. Może nie jest to zbyt wiele wnoszący do życia eksperyment, jednak na pewno ciekawy <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> . Od strony praktycznej, jeśli bałeś się korzystać z systemowej funkcji rotacji zdjęć w trosce o jakoś obrazu, teraz możesz robić to bez najmniejszych oporów.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/05/jak-wyglada-jpeg-po-100-000-rekompresji/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>If&#8230;else czy return?</title>
		<link>http://www.bbproject.net/2010/03/if-else-czy-return/</link>
		<comments>http://www.bbproject.net/2010/03/if-else-czy-return/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 11:03:18 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Laboratorium]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[funkcja]]></category>
		<category><![CDATA[instrukcja warunkowa]]></category>
		<category><![CDATA[optymalizacja]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=112</guid>
		<description><![CDATA[Trudno wymyślić sensowny tytuł dla zagadnienia które chcę opisać. Zawsze zastanawiało mnie czy pisząc w PHP funkcję która początkowo przeprowadza walidację przekazanych argumentów, stosować konstrukcję typu: function nazwa($argument) { if (warunek) { return FALSE; } ... ciało funkcji } &#8230;czy też: function nazwa($argument) { if (warunek) { return FALSE; } else { ... ciało funkcji [...]]]></description>
			<content:encoded><![CDATA[<p>Trudno wymyślić sensowny tytuł dla zagadnienia które chcę opisać. Zawsze zastanawiało mnie czy pisząc w PHP funkcję która początkowo przeprowadza walidację przekazanych argumentów, stosować konstrukcję typu:</p>
<pre class="brush: php">function nazwa($argument)
{
  if (warunek)
  {
    return FALSE;
  }
  ... ciało funkcji
}</pre>
<p>&#8230;czy też:</p>
<pre class="brush: php">function nazwa($argument)
{
  if (warunek)
  {
    return FALSE;
  }
  else
  {
    ... ciało funkcji
  }
}</pre>
<p>Intuicyjnie może się wydawać że pierwszy metoda będzie działać szybciej, gdyż po spełnieniu warunku wychodzimy od razu z funkcji &#8211; parser nie musi przetwarzać reszty kodu. Z kolei w drugiej, mimo iż to co znajduje się w bloku <em>else</em> się nie wykona i tak musi zostać przeczytane przez PHP. Jak jest w rzeczywistości? Sprawdźmy to!</p>
<p><span id="more-112"></span>Pierwsza konstrukcja, w której po spełnieniu warunku wykluczającego dalsze przetwarzanie, od razu zwracamy wartość jest na pewno bardziej przejrzysta. Nie musimy ciągnąć za sobą nawiasu kończącego blok <em>else</em> przez całą resztę instrukcji. Drugi fragment kodu z kolei charakteryzuje się bardziej logiczniejszą strukturą &#8211; gdyż wyraźnie widzimy co się stanie w przypadku spełnienia warunku jak i jego odrzucenia.</p>
<p>Przejdźmy zatem do testów. Przygotowałem na tą okazję dwie, identyczne pod względem działania, funkcje korzystające z dwóch w/w konstrukcji zapisu:</p>
<pre class="brush: php">function test_return($arg)
{
  if ($arg % 2 == 0)
  {
    return 0;
  }
  $arg = $arg*7+2;
  $a = $arg+3;
  $b = 1024;
  $arg = $a - $b*$arg;
  $arg =- 500;
  $arg *= 2;
  return $arg+256;
}</pre>
<p>&#8230;oraz:</p>
<pre class="brush: php">function test_else($arg)
{
  if ($arg % 2 == 0)
  {
    return 0;
  }
  else
  {
    $arg = $arg*7+2;
    $a = $arg+3;
    $b = 1024;
    $arg = $a - $b*$arg;
    $arg =- 500;
    $arg *= 2;
    return $arg+256;
  }
}</pre>
<p>Jak można zauważyć, funkcje te nie mają zbytniego sensu, nie mniej ich głównym celem jest odrzucanie liczb parzystych a przetwarzanie jedynie nieparzystych.</p>
<p>Procedura testowa polegała na wykonaniu jednego miliona iteracji każdej z funkcji, podając kolejne liczby całkowite jako argument poczynając od 0.</p>
<pre class="brush: php">for ($i = 0; $i &lt; 1000000; $i++)
{
  test_return($i);
}</pre>
<p>Wyniki jakie otrzymałem prezentują się następująco:</p>
<table>
<tbody>
<tr>
<th>Nazwa funkcji</th>
<th>Czas wykonania 1 000 000 iteracji</th>
</tr>
<tr>
<td>test_return()</td>
<td>~760ms</td>
</tr>
<tr>
<td>test_else()</td>
<td>~760ms</td>
</tr>
</tbody>
</table>
<p>Jak widać, wyniki są identyczne. W praktyce występowały pewne wahania w zależności od wywołania skryptu, nie mniej średnio, obie funkcje wykonują się w tym samym czasie. Nie ma więc znaczenia jakiego typu konstrukcji użyjemy &#8211; najlepiej tej która bardziej nam w danej chwili odpowiada.</p>
<p>Dlaczego tak się dzieje? Przyczyny braku różnicy w czasie wykonania można dopatrywać się tym, iż parser PHP bądź co bądź musi przeczytać całą zawartość skryptu przed jego kompilacją i uruchomieniem. Skompilowany kod jednej i drugiej funkcji nie różni się zatem niczym, co mogło by w istotny sposób wpłynąć na czas jego wykonania.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/if-else-czy-return/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 3.6 &#8211; wydajność silnika JavaScript</title>
		<link>http://www.bbproject.net/2010/01/firefox-3-6-wydajnosc-silnika-javascript/</link>
		<comments>http://www.bbproject.net/2010/01/firefox-3-6-wydajnosc-silnika-javascript/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 19:26:50 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Laboratorium]]></category>
		<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sunspider]]></category>
		<category><![CDATA[wydajność]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=187</guid>
		<description><![CDATA[Wraz z wydaniem nowego ognistego lisa, oznaczonego numerem 3.6, otrzymaliśmy sporo zmian w tej przeglądarce. To co najbardziej interesujące z punktu widzenia programisty to wydajność silnika JavaScript, która została poprawiona wg. zapewnień producenta o ok. 20%. Pokusiłem się o mały test przy pomocy benchmark&#8217;a SunSpider nowej wersji Firefox&#8217;a, tego jak wypada w porównaniu do poprzedniej [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mozilla-europe.org/pl/firefox"><img class="size-medium wp-image-190 alignleft" title="Firefox" src="http://www.bbproject.net/wp-content/uploads/2010/01/firefox-256x96.png" alt="" width="256" height="96" /></a>Wraz z wydaniem nowego ognistego lisa, oznaczonego numerem 3.6, otrzymaliśmy sporo zmian w tej przeglądarce. To co najbardziej interesujące z punktu widzenia programisty to wydajność silnika <a href="http://pl.wikipedia.org/wiki/JavaScript">JavaScript</a>, która została poprawiona wg. zapewnień producenta o ok. 20%.</p>
<p>Pokusiłem się o mały test przy pomocy benchmark&#8217;a <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a> nowej wersji Firefox&#8217;a, tego jak wypada w porównaniu do poprzedniej 3.5.7, oraz na tle innych popularnych przeglądarek. Co z tego wyszło? Zobaczcie sami.</p>
<p><span id="more-187"></span>Wyniki przedstawione na poniższym wykresie są rezultatami testów SunSpider&#8217;a, podanymi w milisekundach. Ogólnie rzecz ujmując, im mniej, tym lepiej.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-189" title="SunSpider 0.9" src="http://www.bbproject.net/wp-content/uploads/2010/01/sunspider09.png" alt="" width="559" height="445" /></p>
<p>Stawkę otwiera Internet Explorer 8 z oszałamiającym wynikiem na poziomie prawie 5 sekund. Najlepiej wypada przeglądarka firmy Google, deklasując pozostałych rywali. Nowy Firefox 3.6 stara się zbliżyć do lidera poprawiając swój dotychczasowy wynik o <strong>25%</strong>. Jak widzimy, słowa Mozilli są jednak coś warte jeśli chodzi o deklaracje wydajności.</p>
<p>Oczywiście bezwzględne wartości liczbowe zależą od konfiguracji sprzętowej na jakiej wykonywany był pomiar. Nie mniej, względne różnice między wersjami czy też przeglądarkami mówią nam o wydajności ich silnika JavaScript.</p>
<p>Jak przekłada się to na realne odczucia? W dobie popularyzacji technik takich jakich jak <a href="http://pl.wikipedia.org/wiki/AJAX">AJAX</a>, oraz dominacji framework&#8217;ów pokroju jQuery, bardzo! Może nowa wersja produktu Mozilli, w porównaniu ze starszą, nie wgniecie nas w fotel, to jednak dobrze że producenci starają się implementować coraz to lepsze rozwiązania w tym zakresie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/01/firefox-3-6-wydajnosc-silnika-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Czy odłączona od telefonu ładowarka pobiera prąd z sieci?</title>
		<link>http://www.bbproject.net/2010/01/czy-odlaczona-od-telefonu-ladowarka-pobiera-prad-z-sieci/</link>
		<comments>http://www.bbproject.net/2010/01/czy-odlaczona-od-telefonu-ladowarka-pobiera-prad-z-sieci/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 16:53:00 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Laboratorium]]></category>
		<category><![CDATA[moc]]></category>
		<category><![CDATA[pobór prądu]]></category>
		<category><![CDATA[telefon]]></category>
		<category><![CDATA[ładowarka]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=146</guid>
		<description><![CDATA[Od lat krążą różne mity i zabobony o tym ileż to nieużywane, a włączone do kontaktu ładowarki telefonów komórkowych, pobierają prądu. Przy każdym niemal artykule związanym z oszczędzaniem energii elektrycznej znajdziemy punkt mówiący o odłączaniu nieużywanych ładowarek. Czy rzeczywiście tak jest? Już logicznie rzecz biorąc, jeśli nic nie ładujemy, a nasza ładowarka nie wydziela ciepła, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-thumbnail wp-image-150 alignright" title="Ładowarka Nokia" src="http://www.bbproject.net/wp-content/uploads/2010/01/nokia_charger-160x190.jpg" alt="" width="160" height="190" /> Od lat krążą różne mity i zabobony o tym ileż to nieużywane, a włączone do kontaktu ładowarki telefonów komórkowych, pobierają prądu. Przy każdym niemal artykule związanym z oszczędzaniem energii elektrycznej znajdziemy punkt mówiący o odłączaniu nieużywanych ładowarek.</p>
<p>Czy rzeczywiście tak jest? Już logicznie rzecz biorąc, jeśli nic nie ładujemy, a nasza ładowarka nie wydziela ciepła, to nie może pobierać prądu z sieci, nic w przyrodzie nie ginie a zasada zachowania energii wciąż obowiązuje. Ale nie opierajmy się na założeniach i domniemaniach, weźmy miernik do ręki i sprawdźmy to!</p>
<p><span id="more-146"></span>Co nam będzie potrzebne? Najlepiej watomierz. Jako że wartość napięcia w gniazdu jest w miarę stała, a moc pobierana równa jest iloczynowi napięcia i przepływającemu prądowi, posłużę się amperomierzem cęgowym. Cóż to takiego? Zwyczajowy amperomierz musi zostać wpięty w obwód aby móc coś zmierzyć. Wie o tym każdy komu eksplodował miernik po wetknięciu sond pomiarowych do gniazda <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_wink.png' alt=';)' class='wp-smiley' /> . W tej sytuacji musiał bym rozciąć przewód i włączyć do niego amperomierz. Nie jest to zbyt przyjemna metoda.</p>
<p><a href="http://www.bbproject.net/wp-content/uploads/2010/01/miernik_cegowy.jpg"><img class="size-medium wp-image-149 alignright" title="Miernik cęgowy" src="http://www.bbproject.net/wp-content/uploads/2010/01/miernik_cegowy-256x167.jpg" alt="" width="256" height="167" /></a>Amperomierz, czy też w ogóle <a href="http://pl.wikipedia.org/wiki/Miernik_c%C4%99gowy">miernik cęgowy</a>, bazuje na pomiarze pola elektromagnetycznego, wytwarzanego przez przepływający przez przewodnik prąd. Zapina się go na docelowym przewodzie z prądem, który chcemy zmierzyć. Do tego celu wykonałem jedynie niewielki przedłużacz z rozdzielonymi żyłami, gdyż jeśli mierzył bym na wszystkich jednocześnie, nie otrzymał bym nic. Nie chciałbym tutaj wchodzić w dalszą teorię nt. metodologii pomiaru, zatem przystąpmy do rzeczy.</p>
<p>Pomiaru dokonałem na 5 ładowarkach do telefonów firm Nokia, Samsung oraz Sagem, w trzech stanach pracy: bez podłączonego telefonu, z podłączonym telefonem oraz po naładowaniu baterii telefonu. Co otrzymałem? Zobaczcie sami.</p>
<table style="width: 100%;">
<tbody>
<tr>
<th>Ładowarka (model telefonu)</th>
<th>Bez telefonu</th>
<th>Z telefonem</th>
<th>Po naładowaniu</th>
</tr>
<tr>
<td>Nokia AC-3E (3110 classic)</td>
<td>&lt;1mA</td>
<td>~12mA</td>
<td>&lt;1mA</td>
</tr>
<tr>
<td>Samsung ATADM10ESE (SGH-U600)</td>
<td>&lt;1mA</td>
<td>~18mA</td>
<td>&lt;1mA</td>
</tr>
<tr>
<td>Samsung ATADS30EBE (S5230 Avila)</td>
<td>&lt;1mA</td>
<td>~11mA</td>
<td>&lt;1mA</td>
</tr>
<tr>
<td>Samsung TAD137EBE (SGH-X200)</td>
<td>&lt;1mA</td>
<td>~20mA</td>
<td>&lt;1mA</td>
</tr>
<tr>
<td>Sagem (myX-1)</td>
<td>~2mA</td>
<td>~18mA</td>
<td>~3-10mA</td>
</tr>
</tbody>
</table>
<p>Od razu chciałbym zaznaczyć, iż wynik pomiaru bez podłączonego telefonu, oscylował już w granicach błędu pomiarowego i możliwości miernika cęgowego. Zatem rzeczywista wartość płynącego prądu, dla tego przypadku, była zapewne niższa.</p>
<p>Nie mniej, biorąc pod uwagę nawet zawyżoną wartość, mnożąc razy wartość napięcia sieciowego i przeliczając na kilowaty otrzymujemy:</p>
<pre style="text-align: center;">0,001A * 235V = 0,235W = 0,000235kW</pre>
<p>Mając już wyrażony w kW pobór mocy, możemy przemnożyć go przez stawkę za kWh naszego lokalnego dostawcy energii elektrycznej. Tym samym uzyskamy koszt, jaki generuje niepodłączona (do telefonu) ładowarka do gniazdka. W moim przypadku wynosi on 0,3176 zł / kWh (<a href="http://www.vattenfall.pl"><em>Vattenfall</em></a>), zatem:</p>
<pre style="text-align: center;">0,000235kW * 0,3176 zł / kWh = 0,000074636 zł / h</pre>
<p>Jak widzimy, nie jest to oszołamiający koszt. Jeśli miałbym włączoną ładowarkę w trybie 24/7, w skali roku będzie to zaledwie <strong>65gr</strong>.</p>
<p>Czy zatem warto odłączać nieużywaną ładowarkę do telefonu z sieci? W pierwszej kolejności trzeba się upewnić czy nasza ładowarka faktycznie w stanie jałowym nie pobiera tyle energii, co podczas zwyczajnej pracy &#8211; niewykluczone że starsze egzemplarze mogą się tak zachowywać (np.: Sagem myX-1 odbiega nieco od normy). Po drugie, odłączenie ładowarki na pewno wpłynie pozytywnie na jej żywotność, aczkolwiek sądzę iż w marginalnym stopniu. Tak czy inaczej, argument o kolosalnym zużyciu energii elektrycznej przez nieużywaną ładowarkę, możemy włożyć między bajki.</p>
<h5>Aktualizacja</h5>
<p>Zamieszczone zdjęcie miernika cęgowego jest poglądowe. Miernik pokazany na zdjęciu nie dysponuje odpowiednim zakresem pomiarowym, w przeciwieństwie do modelu użytego w pomiarach: <a href="http://www.bbproject.net/wp-content/uploads/2010/01/ut2021.jpg"><em>UNI-T UT202</em></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/01/czy-odlaczona-od-telefonu-ladowarka-pobiera-prad-z-sieci/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
		</item>
	</channel>
</rss>
