Skip to content

Commit

Permalink
Move list of V8 resources into a separate page and update it with new
Browse files Browse the repository at this point in the history
links. Update talks page.
  • Loading branch information
mraleph committed Apr 20, 2014
1 parent 026b22b commit d7377af
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 41 deletions.
3 changes: 2 additions & 1 deletion _config.yml
@@ -1,2 +1,3 @@
permalink: /blog/:year/:month/:day/:title.html
pygments: true
pygments: true
markdown: kramdown
43 changes: 3 additions & 40 deletions _posts/2011-12-18-v8-optimization-checklist.html
Expand Up @@ -7,46 +7,9 @@
<p>Samurais had something called <em>bushid&#333;</em>, way of the warrior, code of conduct they had to follow. In similar manner you have to follow certain <em>opt-d&#333;</em> if you want to optimize your application. I have tried to sketch such a path in my nodecamp.eu talk "<a href="http://s3.mrale.ph/nodecamp.eu/#1">Understanding V8</a>" and <a href="https://plus.google.com/111909581069462963574">+Daniel Clifford</a> tried to do the same in "<a href="https://mkw.st/p/gdd11-berlin-v8-performance-tuning-tricks/#1">V8 Performance Tuning Tricks</a>" talk on GDD11 in Berlin. But not everybody has seen those talks and the question keeps coming back again. So I decided to write down a quick check list for developers who want to optimize their apps. tl;dr version of my checklist is: "<em>Understand before you act</em>".&nbsp;</p>
<p><a id="talks-and-posts" name="talks-and-posts"></a></p>
<h2>Understanding V8 and&nbsp;beyond&nbsp;[talks and posts]</h2>
<p><strong>UPDATE Nov 6 2012</strong> More and more talks are being given about optimizing for V8 and understanding it's internals so I decided to maintain a list of them here. If I missed some interesting/useful blog post or talk about <em>any</em> JavaScript VM please <a href="mailto:me@mrale.ph">send me a link</a> and I will add it.</p>
<ul>
<li>Practical recommendations and optimization walk-throughs for V8
<ul>
<li>Understanding V8 (me, nodecamp.eu 2011) <a href="http://s3.mrale.ph/nodecamp.eu/#1">[slides]</a></li>
<li>V8 Performance Tuning Tricks (<a href="https://plus.google.com/111909581069462963574">+Daniel Clifford</a>, GDD2011 Berlin) <a href="https://mkw.st/p/gdd11-berlin-v8-performance-tuning-tricks/#1">[slides]</a></li>
<li>Console to Chrome (<a href="https://plus.google.com/111647958621817995641">+Lilli Thompson</a>, GDC 2012) <a href="http://console-to-chrome.appspot.com/#8">[slides]</a> <a href="http://www.youtube.com/watch?v=XAqIpGU8ZZk#t=9m0s">[video]</a></li>
<li>Breaking the JavaScript Speed Barrier with V8 (<a href="https://plus.google.com/111909581069462963574">+Daniel Clifford</a>, Google I/O 2012) <a href="http://v8-io12.appspot.com/index.html">[slides]</a> <a href="http://www.youtube.com/watch?v=UJPdhx5zTaw">[video]</a></li>
<li><a href="http://floitsch.blogspot.dk/2012/03/optimizing-for-v8-introduction.html">Optimizing for V8</a> (series of blog posts from <a href="https://plus.google.com/103716596068416580695">+Florian Loitsch</a>, based on his experience writing dart2js compiler)</li>
<li><a href="http://www.html5rocks.com/en/tutorials/speed/v8/">Performance tips for JavaScript in V8</a> by <a href="https://plus.sandbox.google.com/106422711035746240826/posts">+Chris Wilson</a></li>
<li><a href="http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/">Writing Fast, Memory-Efficient JavaScript</a> by <a href="https://twitter.com/addyosmani">Addy Osmani</a></li>
<li><a href="http://www.youtube.com/watch?v=ZhshEZIV2F4">The Footprint of Performance (video)</a>: <a href="https://twitter.com/starzi">Michael Starzinger</a> describes memory implications of various programming patterns at JSConf EU 2012</li>
<li><a href="http://www.youtube.com/watch?v=VhpdsjBUS3g">Accelerating Oz with V8</a> by <a href="https://plus.google.com/+JohnMcCutchan">+John McCutchan</a> (Google I/O 2013) walks through the experience of eliminating junk from <a href="http://www.chromeexperiments.com/detail/find-your-way-to-oz/">Find Your Way To OZ</a> Chrome experiment.</li>
<li><a href="http://www.youtube.com/watch?v=x9Jlu_h_Lyw">A Trip Down Memory Lane with Gmail and DevTools</a> by <a href="https://plus.google.com/+JohnMcCutchan">+John McCutchan</a> and <a href="https://plus.google.com/+LoreenaLee">+Loreena Lee</a> (Google I/O 2013) a success story of eliminating memory leaks in GMail with Chrome Dev Tools.</li>
</ul>
</li>
<li>V8 talks (old ones might contain outdated information)
<ul>
<li>V8: High Performance JavaScript Engine in Google Chrome (<a href="https://plus.google.com/118332431854651588625">+Kevin Millikin</a>, GDD 2008 London) <a href="http://www.youtube.com/watch?v=lZnaaUoHPhs">[video]</a> &nbsp;</li>
<li>V8 Internals (<a href="https://plus.google.com/105218366515825183046">+Mads Ager</a>, Google I/O 2009)&nbsp;<a href="http://www.youtube.com/watch?v=FrufJFBSoQY">[video]</a></li>
<li>Erik Meijer and <a href="https://plus.google.com/117369940038227331789">+Lars Bak</a> on&nbsp;Channel 9: <a href="http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine">Inside V8 - A Javascript Virtual Machine</a>&nbsp;(2009)</li>
<li>Crankshaft: Turbocharging the Next Generation of Web (<a href="https://plus.google.com/100258330325630692559">+Kasper Lund</a>, YOW 2011) <a href="http://yow.eventer.com/events/1004/talks/1017">[video]</a> <a href="http://gotocon.com/dl/goto-aarhus-2011/slides/KasperLund_CrankshaftTurbochargingTheNextGenerationOfWebApplications.pdf">[slides]</a></li>
<li><a href="http://www.youtube.com/watch?v=huawCRlo9H4">Web Languages and VMs: Fast Code is Always in Fashion.</a> by <a href="https://plus.google.com/117369940038227331789">+Lars Bak</a> and <a href="https://plus.google.com/100258330325630692559">+Kasper Lund</a> (Google I/O 2013) gives historic outline for V8 development and describes motivation for creating Dart language.</li>
</ul>
</li>
<li>Fundamentals of V8 and other JS VMs
<ul>
<li><a href="http://twitter.com/andywingo">Andy Wingo</a> <a href="http://wingolog.org/tags/v8">blogs about his adventures in V8's</a> and JavaScriptCore's compilation pipelines</li>
<li><a href="http://twitter.com/dmandelin">David Mandelin</a>'s (SpiderMonkey TL) talk&nbsp;Know Your Engines (Velocity Conf 2011) <a href="http://people.mozilla.com/~dmandelin/KnowYourEngines_Velocity2011.pdf">[slides]</a> <a href="http://www.youtube.com/watch?v=dtSOKLvdAto">[video]</a>.</li>
<li>I am trying to <a href="http://mrale.ph/blog/2012/06/03/explaining-js-vms-in-js-inline-caches.html">explain <em>inline-caching</em> used by JavaScript VMs by writing IC <em>in</em> JavaScript</a>, also see my talk "V8 Inside Out" from WebRebels 2012 <a href="http://s3.mrale.ph/webrebels2012.pdf">[slides]</a> <a href="http://vimeo.com/43334972">[video]</a></li>
<li><a href="http://channel9.msdn.com/Events/Build/2012/4-000">Building High-Performing JavaScript for Modern Engines</a>: performance recommendations from Microsoft's JavaScript team (tailored to Chakra).</li>
</ul>
</li>
<li>Miscellaneous
<ul>
<li>Can V8 do that?! (me, JSConf 2012) <a href="http://s3.mrale.ph/jsconf2012.pdf">[slides]</a> <a href="http://blip.tv/jsconf/jsconf2012-vyacheslav-egorov-6141593">[vides]</a></li>
<li><a href="http://channel9.msdn.com/Shows/Going+Deep/Lars-Bak-and-Steve-Lucco-Chakra-V8-JavaScript-Open-Source">Channel 9: Lars Bak and Steve Lucco: Chakra, V8, JavaScript, Open Source</a></li>
</ul>
</li>
</ul>

<p>I am maintaining a list of V8 related resources. <a href="/v8/resources.html">See it here</a></p>

<h2>Do you understand what the application is trying to do and how?</h2>
<p>The more you understand about your app the better you can optimize it. Sometimes a tricky algorithm or a cache placed in right place will yield more improvements than any local tweaking. Understanding your application in large is a very difficult problem which requires special tooling and discipline. I highly recommend to read <a href="https://twitter.com/#!/coda">@coda</a>'s <a href="http://codahale.com/codeconf-2011-04-09-metrics-metrics-everywhere.pdf">Metrics Metrics Everywhere</a> talk if you want to get a glimpse of that world. Sometimes it is possible to split big application into pieces and optimize them separately but there is no guarantee that overall gain will not be lost when those pieces are connected back together.</p>
<h2>Did you profile your application with built in statistical profiler?</h2>
Expand Down
3 changes: 3 additions & 0 deletions index.html
Expand Up @@ -70,6 +70,9 @@
</div>
<br/>
<div class="box" style="text-align: justify; width: 40em; padding: 5px; background: whitesmoke; border: none;">
<article style="font-family: 'Gloria Hallelujah', monospace, cursive;">
<time datetime="" style="color: grey;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</time> <a href="/v8/resources.html">A list of V8 related resources</a>
</article>
{% for post in site.posts %}
<article style="font-family: 'Gloria Hallelujah', monospace, cursive;">
<time datetime="{{ page.date }}" style="color: grey;">{{ post.date | date:'%d %b %Y' | downcase }}</time> <a href="{{ post.url }}">{{ post.title }}</a>
Expand Down
48 changes: 48 additions & 0 deletions talks/index.html
Expand Up @@ -71,6 +71,54 @@
</head>
<body>
<div class="box talks">
<article>
<div class="conf">CodeFest 2014</div>
<span class="title">Что за... Dart?</span>
<div class="links">
<a href="http://www.slideshare.net/codefest/ss-32910328">[slides]</a>
<a href="#">[video]</a>
</div>
<div>Introduction to Dart (in Russian).</div>
</article>

<article>
<div class="conf">TechTalks NSU 2014</div>
<span class="title">V8 &amp; Dart VM</span>
<div class="links">
<a href="/talks/techtalksnsu2014">[slides]</a>
</div>
<div>Overview of Dart VM and V8 compilation pipelines (in Russian). Slide deck built from CWP and Strange Loop ones (see below).</div>
</article>

<article>
<div class="conf">Dart Flight School Oslo (February 2014)</div>
<span class="title">Dart VM Compiler</span>
<div class="links">
<a href="/talks/ngdart/index-vm.html">[slides]</a>
<a href="https://www.youtube.com/watch?v=bNESI-d-tBQ">[video]</a>
</div>
<div>Overview of Dart VM optimizing compiler.</div>
</article>

<article>
<div class="conf">Dart Flight School Oslo (February 2014)</div>
<span class="title">AngularDart</span>
<div class="links">
<a href="/talks/ngdart/index.html">[slides]</a>
<a href="https://www.youtube.com/watch?v=SGb2TDbYNE8">[video]</a>
</div>
<div>Introduction to AngularDart.</div>
</article>

<article>
<div class="conf">Aarhus University &mdash; CWP 2012</div>
<span class="title">V8</span>
<div class="links">
<a href="/talks/cwp2013">[slides]</a>
</div>
<div>Overview of V8 compilation pipeline. Guest lecture at Aarhus University <a href="https://services.brics.dk/java/courseadmin/CWP">Client-Based Web Programming</a> course.</div>
</article>

<article>
<div class="conf">LXJS 2013</div>
<span class="title">Doubt Everything</span>
Expand Down
77 changes: 77 additions & 0 deletions v8/resources.md
@@ -0,0 +1,77 @@
---
layout: blogpost
title: V8 Resources
date: 2014-04-20
---

<style>
sup.v8 {
color: #4e8aec;
font-weight: bold;
}

a {
color: #4e8aec;
}

li {
margin: 0.2em 0px;
}
</style>

* Test
{:toc}

## Practical / optimization

### Talks

* Understanding V8 (me, nodecamp.eu 2011) [&rang;slides&lang;](http://s3.mrale.ph/nodecamp.eu/#1)
* V8 Performance Tuning Tricks ([+Daniel Clifford](https://plus.google.com/111909581069462963574), GDD2011 Berlin) [&rang;slides&lang;](https://mkw.st/p/gdd11-berlin-v8-performance-tuning-tricks/#1)
* Console to Chrome ([+Lilli Thompson](https://plus.google.com/111647958621817995641), GDC 2012) [&rang;slides&lang;](http://console-to-chrome.appspot.com/#8) [&rang;video&lang;](http://www.youtube.com/watch?v=XAqIpGU8ZZk#t=9m0s)
* Breaking the JavaScript Speed Barrier with V8 ([+Daniel Clifford](https://plus.google.com/111909581069462963574), Google I/O 2012) [&rang;slides&lang;](http://v8-io12.appspot.com/index.html) [&rang;video&lang;](http://www.youtube.com/watch?v=UJPdhx5zTaw)
* The Footprint of Performance [@Michael Starzinger](https://twitter.com/starzi) describes memory implications of various programming patterns. [&rang;JSConf EU 2012 video&lang;](http://www.youtube.com/watch?v=ZhshEZIV2F4) [&rang;NodeDublin 2012 video&lang;](https://www.youtube.com/watch?v=cWdtLAsaDpw)
* [Building High-Performing JavaScript for Modern Engines &rang;video&lang;](http://channel9.msdn.com/Events/Build/2012/4-000): performance recommendations from Microsoft's JavaScript team (tailored to Chakra but many things still apply to V8).
* [Accelerating Oz with V8 &rang;video&lang;](http://www.youtube.com/watch?v=VhpdsjBUS3g) by [+John McCutchan](https://plus.google.com/+JohnMcCutchan) (Google I/O 2013) walks through the experience of eliminating junk from [Find Your Way To OZ](http://www.chromeexperiments.com/detail/find-your-way-to-oz/) Chrome experiment.
* [A Trip Down Memory Lane with Gmail and DevTools &rang;video&lang;](http://www.youtube.com/watch?v=x9Jlu_h_Lyw) by [+John McCutchan](https://plus.google.com/+JohnMcCutchan) and [+Loreena Lee](https://plus.google.com/+LoreenaLee) (Google I/O 2013) a success story of eliminating memory leaks in GMail with Chrome Dev Tools.
* Doubt Everything a talk about common microbenchmarking pitfalls by me at LXJS 2013 [&rang;slides&lang;](http://mrale.ph/talks/lxjs2013) [&rang;video&lang;](http://www.youtube.com/watch?v=65-RbBwZQdU)

### Articles

* [Optimizing for V8](http://floitsch.blogspot.dk/2012/03/optimizing-for-v8-introduction.html), series of blog posts from [+Florian Loitsch](https://plus.google.com/103716596068416580695), based on his experience writing dart2js compiler
* [Performance tips for JavaScript in V8](http://www.html5rocks.com/en/tutorials/speed/v8/) by [+Chris Wilson](https://plus.sandbox.google.com/106422711035746240826/posts)
* [Writing Fast, Memory-Efficient JavaScript](http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/) by [Addy Osmani](https://twitter.com/addyosmani)

## General

<small>(old talks might contain outdated information)</small>

### Talks

* V8: High Performance JavaScript Engine in Google Chrome ([+Kevin Millikin](https://plus.google.com/118332431854651588625), GDD 2008 London) [&rang;video&lang;](http://www.youtube.com/watch?v=lZnaaUoHPhs) &nbsp;
* V8 Internals ([+Mads Ager](https://plus.google.com/105218366515825183046), Google I/O 2009)&nbsp;[&rang;video&lang;](http://www.youtube.com/watch?v=FrufJFBSoQY)
* Crankshaft: Turbocharging the Next Generation of Web ([+Kasper Lund](https://plus.google.com/100258330325630692559), YOW 2011) [&rang;video&lang;](http://yow.eventer.com/events/1004/talks/1017) [&rang;slides&lang;](http://gotocon.com/dl/goto-aarhus-2011/slides/KasperLund_CrankshaftTurbochargingTheNextGenerationOfWebApplications.pdf)
* [Web Languages and VMs: Fast Code is Always in Fashion.](http://www.youtube.com/watch?v=huawCRlo9H4) by [+Lars Bak](https://plus.google.com/117369940038227331789) and [+Kasper Lund](https://plus.google.com/100258330325630692559) (Google I/O 2013) gives historic outline for V8 development and describes motivation for creating Dart language.
* Speed is awesome, but low latency is sublime by [+Hannes Payer](https://plus.google.com/114443265544293073897) at JSConf EU 2013 overviews V8 efforts to minimize latency (GC, parallel compilation) [&rang;video&lang;](https://www.youtube.com/watch?v=3vPOlGRH6zk)


### Other

* Erik Meijer and [+Lars Bak](https://plus.google.com/117369940038227331789) on&nbsp;Channel 9: [Inside V8 - A Javascript Virtual Machine](http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine)&nbsp;(2009)

## Fundamentals

### Talks

* [David Mandelin](http://twitter.com/dmandelin)'s (SpiderMonkey TL) talk&nbsp;Know Your Engines (Velocity Conf 2011) [&rang;slides&lang;](http://people.mozilla.com/~dmandelin/KnowYourEngines_Velocity2011.pdf) [&rang;video&lang;](http://www.youtube.com/watch?v=dtSOKLvdAto).
* I am trying to [explain *inline-caching* used by JavaScript VMs by writing IC *in* JavaScript](http://mrale.ph/blog/2012/06/03/explaining-js-vms-in-js-inline-caches.html), also see my talk "V8 Inside Out" from WebRebels 2012 [&rang;slides&lang;](http://s3.mrale.ph/webrebels2012.pdf) [&rang;video&lang;](http://vimeo.com/43334972)

### Articles

* [Andy Wingo](http://twitter.com/andywingo) [blogs about his adventures in V8's](http://wingolog.org/tags/v8) and JavaScriptCore's compilation pipelines
* Jay Conrod's [A tour of V8](http://jayconrod.com/tags/v8) series of posts (covers: object representation, GC and compilation pipeline)

## Miscellaneous

* Can V8 do that?! (me, JSConf 2012) [&rang;slides&lang;](http://s3.mrale.ph/jsconf2012.pdf) [[vides]](http://blip.tv/jsconf/jsconf2012-vyacheslav-egorov-6141593)
* [Channel 9: Lars Bak and Steve Lucco: Chakra, V8, JavaScript, Open Source](http://channel9.msdn.com/Shows/Going+Deep/Lars-Bak-and-Steve-Lucco-Chakra-V8-JavaScript-Open-Source)

0 comments on commit d7377af

Please sign in to comment.