Friday, November 16, 2012

Chrome V8 features

Reading upon this article from http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript and it gave some inside of the V8 javascript engine inside Chrome.

Citing from: http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/
  • A base compiler, which parses your JavaScript and generates native machine code before it is executed, rather than executing bytecode or simply interpreting it. This code is initially not highly optimized.
  • V8 represents your objects in an object model. Objects are represented as associative arrays in JavaScript, but in V8 they are represented with hidden classes 6, which are an internal type system for optimized lookups.
  • The runtime profiler monitors the system being run and identifies “hot” functions (i.e. code that ends up spending a long time running).
  • An optimizing compiler recompiles and optimizes the “hot” code identified by the runtime profiler, and performs optimizations such as inlining (i.e. replacing a function call site with the body of the callee).
  • V8 supports deoptimization, meaning the optimizing compiler can bail out of code generated if it discovers that some of the assumptions it made about the optimized code were too optimistic.
  • It has a garbage collector. Understanding how it works can be just as important as the optimized JavaScript.

Javascript inheritance example

Wednesday, November 07, 2012

Yet, it is javascript closure

Here are some basic examples of closure: