Hoofdcategorieën

Mozilla verbetert Javascript-prestaties met Tracemonkey

Door Harm Hilvers, zaterdag 23 augustus 2008 11:29, views: 13.848

Volgens Mozilla-ontwikkelaar Mike Shaver kunnen nieuwe versies van Mozilla-producten zoals browser Firefox de scriptingtaal Javascript aanzienlijk sneller verwerken. Er wordt namelijk gewerkt aan een vernieuwde jit-compiler.

De vernieuwde just-in-time compiler heet Tracemonkey en zorgt ervoor dat javascript op het x86-, x86-64- en ARM-platform naar zogeheten native code gecompileerd wordt, die direct door de processors kan worden uitgevoerd. Dit levert aanzienlijke prestatie- en snelheidsverbeteringen op, schrijft Shaver op basis van enkele uitgevoerde benchmarks. Tracemonkey bevindt zich sinds deze week in de testversie van Firefox 3.1, maar staat standaard uit. Er moet namelijk nog een aantal fouten uit de software gehaald worden.

De ontwikkelaars hebben verschillende ideeën om Tracemonkey verder te verbeteren, meldt Shaver. Te denken valt aan een verbeterde codegenerator, efficiëntere datastructuren, de toepassing van parallelle compilatie, het gebruik van specifieke processorfeatures en het beter traceren van codepatronen. Bij de ontwikkeling van de vernieuwde jit-compiler is gebruikgemaakt van een techniek genaamd trace trees en van ideeën die bij het Tamarin Tracing-project vandaan komen. Vooralsnog is Mozilla de enige browserbouwer die jit-compilatie voor javascript toepast, maar Shaver verwacht dat andere ontwikkelaars zullen volgen.

Tracemonkey - Core JavaScript Primitives Tracemonkey - Assorted Benchmarks

Het is vanwege twee redenen noodzakelijk dat de Mozilla-producten zo snel mogelijk van Tracemonkey worden voorzien, schrijft Shaver. De eerste is dat websiteontwikkelaars en gebruikers vragen om een betere performance, omdat vertragingen bij hen irritatie oproepen. De tweede reden is dat er in de Mozilla-programma's intensief gebruikgemaakt wordt van Javascript. Prestatieverbeteringen op Javascript-vlak hebben daardoor direct gevolg voor de performance van bijvoorbeeld Firefox en Thunderbird.

Volgende 12:27
Vorige 11:03

Reacties

«  1  2  »

Erg mooi! Ik vond dat de Javascript prestatie's in FF3 al aardig vooruit gegaan waren. Jammer genoeg heb je te maken met verschillende browses ... dus kan je de FF3 (en zeker de Tracemonkey) prestatie's niet als baseline gebruiken. Nou ja, daarvoor hebben we IE ... :)


Oh? Uit deze test van alle populaire browsers blijkt anders dat IE7 de allertraagste is. :)

Nummertjes zijn iets heel anders dan perceptie. Ik heb toch het gevoel dat IE7 sneller is dan FF, ook al is het misschien trager (PS: ik ben wel fervent FF gebruiker). En het gaat om het gevoel bij de eindgebruiker. Niet om milliseconden.

Dat klopt. Nummers zijn meetbaar, perceptie alles behalve, het zit voornamelijk tussen de oren. En als er ergens vaak dingen niet in order zijn of op een rijtje dan is het tussen de oren.

Die link gaat over "overall load time", niet over JS snelheid. En dan is er nog een verschil tussen raw JS CPU power en JS scherm-/content-opbouw snelheid. Gebruikte CSS kan (soms) ook van significante invloed zijn. In mijn ervaring is Opera het snelst met JS, FF het snelst met CSS en IE ligt daar mooi tussenin (JS snel, erg CSS traag)

PS: Dat was met IE 7, FF 2 en Opera 9.0 ... FF 3 en Opera 9.5 heb ik (nog) niet getest, maar ik ben een JS + CSS benchmark aan het ontwikkelen als hobby project ;)

[Reactie gewijzigd door SKiLLa]


Ik heb juist ondervonden dat IE vele malen langzamer is dan Firefox. Soms zie je een duidelijk delay bij DOM manipulaties, worden dynamische Javascript includes (<script src="...">) pas na enkele tienden van seconden geactiveerd (in plaats van honderdsten in Firefox), en heeft IE de neiging te crashen bij bijvoorbeeld een paar duizend DOM manipulaties of slechts een tiental event handlers.

Netjes! Nou was firefox natuurlijk als één van de browsers met de beste geheugen prestaties, maar javascript was toch vaak nog wel een probleem (ook in andere browsers overigens).

Huh Firefox had toch juist het slechtste geheugen prestaties? Vooral bij meerdere tabbladen waar IE (en vooral Opera) had echt significant beter deden.

Hmm het wordt tijd voor het opzoeken van een test :P of een test door t.net.


Firefox 2 was wel redelijk slecht met geheugen, maar niet veel slechter dan IE, die lekte ook als een mandje. Ik geloof dat ze nu FF2 ook verbeterd hebben.

Firefox heeft nogsteeds de slechtste geheugenprestaties, weet het nu alleen te maskeren. Beetje lullig van de ontwikkelaars.

ROFLMAO

Alsof ze nu effies kernel hooks hebben zodat alle geheugen-meet-programma's lekker stiekem niet gaan laten zien dat Firefox eigenlijk veul meer geheugen gebruikt dan er staat.

Haha, hoe kun je geheugenprestaties nou weer maskeren. Het wordt beter, of niet. Een tussenweg lijkt mij niet mogelijk.


In firefox zit net zo hard een "pornoknop" hoor. Extra > Privegegevens opruimen

Hoe verhoud dit zich tot Safari? Die volgens mij op dit moment nog wel een van de snelste is?

Dat zou misschien een reden kunnen worden om over te stappen namelijk!

Tracemonkey vs Squirrelfish. Tracemonkey (Firefox) is beduidend sneller. Ten opzichte van de 'oude' engine is er op sommige vlakken en versnelling van ongeveer 40x gehaald.

Er is ook een (real-life) demo gemaakt, wat de nieuwe snelheidswinst gebruikt.

Om Tracemonkey te kunnen gebruiken, dien je eerst een recente nightly build (nieuw profiel is aangeraden!) te downloaden en daarna via about:config handmatig de waarde javascript.options.jit.content op true te zetten.

Tracemonkey is slechts het begin, meer snelheidswinsten liggen in het nabije verschiet.
There is still a ton of work to be done. The incredible speed-ups that we're seeing are only just the beginning. A lot can be done to improve how registers are currently being allocated which will provide even more speed-ups.
bron: http://ejohn.org/blog/tracemonkey/

[Reactie gewijzigd door Smithers.83]


Om Tracemonkey te kunnen gebruiken, dien je eerst een recente nightly build (nieuw profiel is aangeraden!) te downloaden en daarna via about:config handmatig de waarde javascript.options.jit.content op true te zetten.
Ik heb hem toch weer netjes uitgezet. Het ding crashte steeds op de demo pagina. Wel natuurlijk netjes een crash report gestuurd.

Toch is er iets raars: Volgens de 2e grafiek hier doet de TraceMonkey versie 2.113 seconden voor een SunSpider run.

Volgens http://webkit.org/blog/189/announcing-squirrelfish/ doet WebKit + SquirrelFish er 30.6/minuut = 1.96 sec per run.

Dat lijkt me sneller?

Je kan de sunspider test niet vergelijken tussen meerdere PC's aangezien het sterk afhankelijk is van de hardware (CPU). M.a.w: ze (webkit) hebben dus een snellere PC gebruik en geeft daardoor een vertekend beeld.

Dit is erg mooi! Tegenwoordig wordt er ook steeds meer gebruik gemaakt van webbased applicaties. Deze applicaties gebruiken dan ook bergen javascript.

Zie bijvoorbeeld: Qooxdoo feedreader demo

bizarre snelheidsverbetering. In sommige gevallen zelfs 40 keer sneller.

bron

Voor mensen die zich vragen stellen bij de standaardsnelheden van de loops in Javascript, hier een artikel dat een aantal weken geleden uitkwam:

http://blogs.sun.com/greimer/entry/best_way_to_code_a

is een uitgebreid overzicht van alle mogelijke loops op alle mogelijke browsers(op alle mogelijke systemen)

indien FF dit nog gaat versnellen zitten we goed voor de toekomst

Goed nieuws.
Vooralsnog is Mozilla de enige browserbouwers die jit-compilatie voor javascript toepast, maar Shaver verwacht dat andere ontwikkelaars zullen volgen.
Nu hopen dat Microsoft hier ook eens een blik opwerpt. Is het nu zo dat Microsoft dat Tracemonkey ook zo zou kunnen implementeren? Of is dat zoiets als water en vuur.

Ik zie zo graag dat de browser-giganten hun krachten bundelen. Eén platform... *plop* Ik stop met dromen.

Doe mij maar concurrentie: Firefox moet tegen IE opboxen, en verzint steeds iets nieuws om onderscheid te maken. IE8 wordt (als ik de geruchten goed begrijp) de eerste IE die standards-compliant is, zonder FF was dat niet gebeurd. En mede omdat Opera en Safari de ACID-testen wonnen is men bij FF heel hard aan het werk gegaan :)

Microsoft zou tracemonkey trouwens zo kunnen overnemen, maar dan moeten ze wel een licentie kopen bij Mozilla, of IE onder de Mozilla Public Licence (of zelfs GPL) moeten uitbrengen. En dat zal waarschijnlijk allebei niet gebeuren ;)
Het zou me trouwens niks verbazen als je dit binnen een paar jaar in IE terug vindt, als blijkt dat dit zo goed werkt als beloofd.

Microsoft zou tracemonkey trouwens zo kunnen overnemen, maar dan moeten ze wel een licentie kopen bij Mozilla, of IE onder de Mozilla Public Licence (of zelfs GPL) moeten uitbrengen.
Nee hoor:
3.7. Larger Works.

You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
Mozilla Public License Version 1.1

De meeste Open Source licenties hebben niet de beperking die de GPL heeft. Bij de Mozilla licentie vallen alleen wijzigingen / contributies aan de Mozilla code onder de Mozilla license. Niets weerhoudt MS ervan om Tracemonkey te integreren in IE onder de licentie van IE. Ze moeten dan wel ook een Mozilla licentie meeleveren voor het Tracemonkey stukje. Dat is juist de spirit van Open Source, beschikbaar voor iedereen, ook voor developers en onder / in combinatie met andere licenties. Behalve bij de GPL dan.

Ik zie zo graag dat de browser-giganten hun krachten bundelen. Eén platform... *plop* Ik stop met dromen.
En daarmee de concurrentie-slag om zeep helpen zodat we weer tien jaar met dezelfde browser zitten terwijl de markt zit te springen om nieuwe dingen te kunnen implementeren?
Nee, dan heb ik liever 3 grote, goede spelers en een aantal kleintjes. Dat houdt de ontwikkelaars scherp ;)


java != javascript ;)

Dit gaat helemaal niet over java? Dit gaat over javascript, dus over die leuke ajax-dingen die ervoor zorgen dat hier een tekstveld uitklapt wanneer je reageert op een post, of een menu omlaag komt, of google maps... Vind nog maar eens een grote site zonder javascript, dat wordt lastig ;)

Welke site gebruikt eigenlijk nog java-applets? Ik dacht dat die waren uitgestorven, alles wat ik zie is flash of javascript.

java applet > hyves en profotonet voor het uploaden van pics
«  1  2  »

Op dit item kan niet meer gereageerd worden.

Volgende 12:27
Vorige 11:03
VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: