<?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>stream of bytes &#187; tracemonkey</title>
	<atom:link href="http://diary.braniecki.net/tag/tracemonkey/feed/" rel="self" type="application/rss+xml" />
	<link>http://diary.braniecki.net</link>
	<description>Open-source development violates almost all known management theories.</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:03:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TraceMonkey a Tamarin</title>
		<link>http://diary.braniecki.net/2008/08/24/tracemonkey-a-tamarin/</link>
		<comments>http://diary.braniecki.net/2008/08/24/tracemonkey-a-tamarin/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 11:48:26 +0000</pubDate>
		<dc:creator>zbraniecki</dc:creator>
				<category><![CDATA[main]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tamarin]]></category>
		<category><![CDATA[tracemonkey]]></category>

		<guid isPermaLink="false">http://diary.braniecki.net/?p=585</guid>
		<description><![CDATA[Wczoraj Mozilla ogłosiła prace nad silnikiem TraceMonkey. TM jest modyfikacją aktualnego silnika Gecko &#8211; SpiderMonkey, do którego dodana została opracowana przez pracowników Uniwersytetu Kalifornijskiego implementacja algorytmu JIT. Nie jest to może żadna czarna magia, po prostu opóźnienie wykonywania skryptów JS (każdy kto pracował z JS wie, jakie ograniczenia wydajności JS nakłada &#8211; nikt raczej nie [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj Mozilla ogłosiła prace nad silnikiem <a href="http://en.wikipedia.org/wiki/SpiderMonkey_(Javascript_engine)#TraceMonkey">TraceMonkey</a>. TM jest modyfikacją aktualnego silnika Gecko &#8211; SpiderMonkey, do którego dodana została opracowana przez pracowników Uniwersytetu Kalifornijskiego implementacja algorytmu <a href="http://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a>. Nie jest to może żadna czarna magia, po prostu opóźnienie wykonywania skryptów JS (każdy kto pracował z JS wie, jakie ograniczenia wydajności JS nakłada &#8211; nikt raczej nie pokusiłby się o tworzenie silników graficznych 3D w JS) jako interpretowanych jest tak duża, że okazało się, iż opłaca się skompilować wstępnie kawałki kodu JS i w przypadku występowania powtarzających się procedur odpalać skompilowane fragementy zamiast interpretowania kodu na bieżąco.</p>
<p>Efekty są bardzo wydatne.</p>
<p>Każdy kto śledzi <a href="http://planet.mozilla.org">planetę Mozilli</a> widział już wykresy Brendana, Shavera i Schrepa. Ja wykonałem małe testy na benchmarku <a href="http://dromaeo.com/">Dromaeo</a> autorstwa niezrównanego Johna Resiga.</p>
<p>Wykonałem dwa testy &#8211; w Fx 3.0.1 i dzisiejszej kompilacji nocnej z włączonym JIT dla treści stron.</p>
<p>Wynik dla <a href="http://dromaeo.com/?id=18824">Fx 3.0.1</a>, Wynik dla <a href="http://dromaeo.com/?id=18839">Minefield trunk</a> i wynik <a href="http://dromaeo.com/?id=18824,18839">porównania dwóch</a>. Przyspieszyć o kolejne 46%? Nieźle&#8230; co? <img src='http://diary.braniecki.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Najlepszą informacją w tym wszystkim jest to, że Brendan twierdzi, że JIT powinien być szybszy w dokładnie każdym teście. Jeśli gdzieś nie jest, jest to błąd i będą to teraz poprawiać&#8230; Całość implementacji zajęła 60 dni i jest to wersja bardzo wstępna, najbliższe miesiące powinny przynieść kolejne przyspieszenia wraz z optymalizacją nowych możliwości.</p>
<p>Co z Tamarinem? Tamarin to znacznie bardziej poważny eksperyment, wymagający dużego nakładu pracy. Ma być on podstawą silnika ActionScript, który zastąpi obecny w platformie Mozilla 2 (i w efekcie w Firefoksie 4).</p>
<p>Obecnie prace nad nim trwają w osobnym repozytorium na hg.mozilla.org, i zostanie on włączony do mozilla-central prawdopodobnie po wydaniu Fx3.1. Tamarin ma być oczywiście znowu, znacznie szybszy od TraceMonkey (gdyż będzie korzystał z jego dobrodziejstw i dodawał kolejne), będzie też pierwszą implementacją języka JavaScript 2.0 (który dla mnie jest przede wszystkim pokornym wzięciem największych dobrodziejstw Pythona:) ) ale można go już dziś przetestować kompilując tamarin-central.</p>
<p>Kolcami tej róży są problemy z debuggerami. JIT sprawia, że cały proces interpretacji przestaje być deterministyczny i nie za bardzo wiadomo jak to obejść. Na razie przy włączonym Venkmanie, Gecko wyłącza JIT, ale nie jest to optymalne rozwiązanie i będzie trzeba poczekać, aż Gijs wróci z wakacji i podejmie decyzje co dalej z Venkmanem&#8230;</p>
<p>Jeśli ktoś chce włączyć JIT, to może to zrobić na dwóch poziomach &#8211; dla stron i dla samego Firefoksa (about:config i szukaj &#8220;jit&#8221;). Włączenie dla Firefoksa oczywiście znacznie poprawia jego wydajność (duże części Fx napisane są w JS), ale jest w tym momencie dość ryzykowne. Natomiast dla stron jest dość stabilnie (zanotowałem kilka wywaleń w Gmailu i Facebooku tylko) i z każdym dniem będzie lepiej <img src='http://diary.braniecki.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Docelowo, w ActionMonkey i Mozilla 2, celem Mozilli jest aby jak najwięcej kodu było pisanego w JS, a wydajność JS była porównywalna z kodem kompilowanym (C++)&#8230; Coś co wydawało się niemożliwe, nie tylko stało się realne, ale jest aktualnie celem programistów w projekcie Mozilla. Mam nadzieję, że się uda <img src='http://diary.braniecki.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://diary.braniecki.net/2008/08/24/tracemonkey-a-tamarin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

