JS web frameworks benchmark – Round 5

Welcome to another round of the js web framework benchmark.
Once again a lot has happened:

  • Elm, Knockout, Nx, Binding.scala, Dio, Polymer, Simulacra and Svelete are new in this round.
  • Most other frameworks have been updated to their latest version (though it took a bit to write this blog post, so they might be outdated again by now…)
  • There are now two result tables: One for “keyed” implementations and one for “non-keyed”. I’ve written a separate blog post about that.  The classification as keyed or non-keyed is not complete yet and only based on the current benchmark implementation and does not indicate that the framework doesn’t support the other mode. Feel free to send me pull requests!
  • The “clear rows a 2nd time” benchmark has been removed. It showed a (maybe theoretical) issue in react that is fixed by now.

I’d really like to thank all contributors (at the time of writing there are 33 of them). Without you it would be impossible to make such a comparison.

The results are here:

Key observations (pun intended):

  • It’s still the case that frameworks are getting faster. Riot 3 is a big step in terms of performance in this benchmark.
  • Ember is included again in this round and 2.10-beta is a big improvement.
  • I’ll really have to rework my vanilla.js implementation again if it should become the fastest possible implementation again.
  • Apart from that many frameworks are in a performance range that should be fine for many requirements. Vue.js, kivi, vidom, plastiq, domvm and bobril in the keyed table show little weakness.
  • As for the non-keyed frameworks the results are much closer. Dio, inferno and svelte are incredibly fast, domvm and Vue.js are only a bit behind.

You can to click through the implementations in your browser here. Please keep in mind that all durations printed on the browser console are just approximations, but good enough to feel the effect between fast and slow implementations. The real results are gathered from the chrome timeline with the test driver in webdriver-ts.

16 thoughts on “JS web frameworks benchmark – Round 5

  1. Was trying out the source on my own machine (or anyone can just see http://www.stefankrause.net/js-frameworks-benchmark5/index.html )
    React only is not an ideal competito to Ember or Angular, so I am more concerned with React with Redux
    And you’ll notice swapping and changing 10th row takes 40~70ms on React+Redux while it takes <10ms on Angular and Ember consistently.
    React is a good view library, but React with a framework is still not there yet

  2. Because it behaves non-keyed by the check in webdriver-ts/src/nonKeyed.ts
    Feel free to contribute a keyed implementation…

  3. Thank you for this benchmark :)

    When new data for the new versions of JS Framework?

  4. Hi,
    First of all, it’s a great work.
    I just wanted to know how I can add another framework like backbone.js?

  5. A million thanks for your efforts. This is getting the gold standard when talking about frameworks performance where I work. Keep going!

  6. Congratz! Great work!
    By the way: it’s May, time for a new round?
    I’m curious about Angular 4 (for both memory and speed).

  7. I think it’s about time for the next round. I plan to publish it the next weeks.

Comments are closed.