Webkit and Browser Performance

Registered by Duncan McGreggor

 * overview of what browsers current main focus is wrt speed
 * quick intro on firefox
 * quick intro on webkit
 * quick intro on chromium
 * discuss validation benchmarking tools
   * goals
   * existing benchmarks/performance tests
   * need for development of benchmarks etc.
 * pgo builds -> firefox devs announced first successful pgo build on i386 linux with gcc 4.4 -> 10% perf boost; toolchain development needed for arm

Blueprint information

Status:
Started
Approver:
Alexander Sack
Priority:
Medium
Drafter:
Paul Larson
Direction:
Needs approval
Assignee:
Paul Larson
Definition:
Approved
Series goal:
Accepted for maverick
Implementation:
Started
Milestone target:
milestone icon ubuntu-10.10-beta
Started by
Paul Larson

Related branches

Sprints

Whiteboard

asac: dropped some unused template sections from the wiki spec/page.
asac: split up work in milestone chunks and targetted the full spec for beta. Feel free to shuffle work items as you wish.

[pwlars 29 Jul 10]: Sample code for measuring startup time here: lp:~pwlars/+junk/browser-benchmarking
[pwlars 18 Aug 10]: I've looked at the following benchmarks for javascript: Sunspider, Dromaeo, V8, and Peacekeeper. Of those, Peacekeeper and Sunspider look the most promising from an automation perspecive, so that is where I will focus my efforts.
[pwlars 25 Aug 10]: Added a script to run peacekeeper benchmark under either chromium or firefox, and extract the results at the end

Status:
[pwlars 05 Oct 10]: Complete aside from the page load performance tests, which are postponed until some issues around them can be worked out.

Sunspider: http://www2.webkit.org/perf/sunspider-0.9/sunspider.html
Dromaeo: http://dromaeo.com/
V8: http://v8.googlecode.com/svn/data/benchmarks/v5/run.html
Peacekeeper: http://service.futuremark.com/peacekeeper/

For discussion:
Firefox
   * Currently a bit behind on performance?
   * A lot of enthusiam in Mozilla about improving the ARM support
   * New JavaScript backend (JaegerMonkey) has potential to bring some benefits, but not very far advanced - http://arewefastyet.com/, http://arewefastyet.com/?machine=3 (ARM)
   * Well-established development and maintenance process
   * Large, mature codebase may slow down evolution and improvement?
   * Large user community and good plugin support (though availability of 3rd-party native plugins for ARM is more limited)

WebKit
   * Good work being done by Apple
   * Open-source WebKit is likely to lag a bit behind Apple's own development.

Chromium
   * Believed to be memory-hungry (benchmarks?)
   * V8 not optimal for ARM yet, but work is under way to improve it. V8 has a good chance of becoming the fastest JavaScript JIT on ARM in the medium term.
   * Maintenance and security update process still uncertain?
   * Plugin availability / maturity?

Benchmarking
   * We don't have a great way to compare browser performance right now.
   * What benchmarks exist? (synspider, dromaeo, ...)
   * Copyright / IP problems frustrate the standardisation of content-based benchmarks. Can we work round this?
   * Most standard benchmarks are microbenchmarks and not a good guide to human perception of the browser performance
   * Define an explicit human-based benchmark to supplement what already exists?

Work items (maverick-alpha-3):
[pwlars] script to launch browser and measure browser load time: DONE
[pwlars] Investigate javascript performance benchmarks: DONE

Work items (ubuntu-10.10-beta):
[pwlars] script(s) to execute javascript benchmarks: DONE
[pwlars] script(s) to collect and log results from javascript benchmarks: DONE

Work items (ubuntu-10.10):
[pwlars] script to instrument a page and measure page load time: POSTPONED
[pwlars] script to launch page load time tests in browser and collect results: POSTPONED
[pwlars] create or modify sample webpages to test page load performance: POSTPONED

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.