SlideShare utilise les cookies pour améliorer les fonctionnalités et les performances, et également pour vous montrer des publicités pertinentes. Si vous continuez à naviguer sur ce site, vous acceptez l’utilisation de cookies. Consultez nos Conditions d’utilisation et notre Politique de confidentialité.
SlideShare utilise les cookies pour améliorer les fonctionnalités et les performances, et également pour vous montrer des publicités pertinentes. Si vous continuez à naviguer sur ce site, vous acceptez l’utilisation de cookies. Consultez notre Politique de confidentialité et nos Conditions d’utilisation pour en savoir plus.
JS Engine Performance Scutariu Paul Stirban Ionut 1
Table of contents1. Introduction2. V8 engine – Google Chrome 163. SpiderMonkey - FireFox 94. Chakra – IE 95. Carakan – Opera 116. Case study – Chrome vs FireFox vs IE vs Opera7. Bibliography 2
V8 Engine – Google Chrome 3Improvements:3. Garbage collectorv8 engine:- stops program execution when performing a garbage collectioncycle.- processes only part of the object heap in most garbage collectioncycles. This minimizes the impact of stopping the application.- always knows exactly where all objects and pointers are inmemory. This avoids falsely identifying objects as pointers which canresult in memory leaks.http://code.google.com/apis/v8/design.htmlhttp://en.wikipedia.org/wiki/Inline_caching 6
SpiderMonkey – FireFox 9 1■ SpiderMonkey: 30% faster■ SpiderMonkey integrates type inference with Jaegermonkey JITcompiler to generate efficient code■ SpiderMonkey is written in C++ and contains an interpreter,several JIT compilers (TraceMonkey, JägerMonkey, and IonMonkey),a decompiler, and a garbage collector. 7
Chakra – IE 9 1■ Chakra is the new JScript engine developed by Microsoft for theirupcoming Internet Explorer 9 (IE9) web browser■ A distinctive feature of the engine is that it compiles scripts on aseparate CPU core, parallel to the web browser■ Chakra improves the performance of the browser and the webpages render and respond much faster 11
Carakan – Opera 11 1■ So how fast is Carakan? Using a regular cross-platform switchdispatch mechanism (without any generated native code) Carakanis currently about two and a half times faster at the SunSpiderbenchmark than the ECMAScript engine in Presto 2.2 (Opera 10Alpha). Since Opera is ported to many different hardwarearchitectures, this cross-platform improvement is on its own veryimportant■ The native code generation in Carakan is not yet ready for full-scale testing, but the few individual benchmark tests that it isalready compatible with runs between 5 and 50 times faster, so it islooking promising so far 13
Carakan – Opera 11 2Improvements:1. Automatic object classification- A major improvement over this engine is in the representation of ECMAScript objects. Each object is assigned a class that collects various information about the object, such as its prototype and the order and names of some or all of its properties- Class assignment is naturally very dynamic, since ECMAScript is a very dynamic language, but it is organized such that objects with the same prototype and the same set of properties are assigned the same class 14
Carakan – Opera 11 3Improvements:1. Automatic object classification- This representation allows compact storage of individual objects, since most of the complicated structures representing the objects properties are stored in the class, where they are shared with all other objects with the same class. In real-world programs with many objects of the same classes, this can save significant amounts of memory.- For two objects with the same class, if the lookup of a property "X" on the first object gave the result Y, we know that the same lookup on the second object will also give the result Y. We use this to cache the result of individual property lookups in ECMAScript programs, which greatly speeds up code that contains many property reads or writes 15
Carakan – Opera 11 4Improvements:2. Native code generation- Although engines bytecode instruction set permits theimplementation of a significantly faster bytecode execution engine,there is still significant overhead involved in executing simpleECMAScript code, such as loops performing integer arithmetics, in abytecode interpreter.- In addition to generating native code from regular ECMAScriptcode, we also generate native code that performs the matching ofsimple regular expressions. This improves performance a lot whensearching for matches of simple regular expressions in long strings.For sufficiently long strings, this actually makes searching for asubstring using a regular expression faster than the same searchusing String.prototype.indexOf. For shorter strings, the speed is limitedby the overhead of compiling the regular expression 16
Carakan – Opera 11 5Improvements:3. Register-based bytecode- The last couple of generations of Operas ECMAScript engine haveused a stack-based bytecode instruction set. This type of instructionset is based around a stack of values, where most instructions "pop"input operands from the value stack, process them, and "push" theresult back onto the value stack. Some instructions simply pushvalues onto the value stack, and others rearrange the values on thestack. This gives compact bytecode programs and is easy togenerate bytecode for 17
Case study – Chrome vs FireFox vs IE vs Opera 1Now we will se some performance statistics using v8 and krakenbenchmarks.V8 benchmark:http://v8.googlecode.com/svn/data/benchmarks/v5/run Score 2500 2000 1500 1000 2085 1354 500 959 629 0 IE 9 Opera 11.6 FireFox 9 Chrome 16 18
Case study – Chrome vs FireFox vs IE vs Opera 2Now we will se some performance statistics using v8 and krakenbenchmarks.V8 benchmark:http://v8.googlecode.com/svn/data/benchmarks/v5/run Browser Speed Google Chrome 16 2085 ms Opera 11.6 959 ms FireFox 9 1354 ms IE 9 629 ms The biggest score indicates the browser’s engine with the best performance 19
Case study – Chrome vs FireFox vs IE vs Opera 3Now we will se some performance statistics using v8 and krakenbenchmarks.Kraken benchmark:http://krakenbenchmark.mozilla.org/ Time in milliseconds 60000 50000 40000 30000 55878 20000 42685 10000 13399 15315.4 0 Chrome 16 FireFox 9 Opera 11.6 IE 9 20
Case study – Chrome vs FireFox vs IE vs Opera 4Now we will se some performance statistics using v8 and krakenbenchmarks.Kraken benchmark:http://krakenbenchmark.mozilla.org/ Browser Speed Google Chrome 16 13399.3ms +/- 1.8% FireFox 9 15315.4ms +/- 0.6% Opera 11.6 42685.0ms +/- 1.2% IE 9 55878.0ms +/- 1.8% Now time is being calculated in miliseconds and obvious the lowest is the best engine As we can see, Google’s v8 is the best engine by far, and the statistics show this. 21