Bug 19116
Summary: | SquirrelFish shouldn't regress on variable lookups | ||
---|---|---|---|
Product: | WebKit | Reporter: | Anthony Ricaud <rik> |
Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | mjs, mrowe, oliver |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Mac | ||
OS: | OS X 10.5 | ||
URL: | http://flesler.webs.com/Benchmark/vars/ |
Anthony Ricaud
Nightlies have great performance improvements compared to Safari 3.1. SquirellFish shouldn't regress on that point. It's a test to compare lookups performance with variables in different scopes
For the record, here are the results I have on my machine :
FF3ß5
global : average : 44ms
local1 : average : 57.6ms
local2 : average : 55.8ms
local3 : average : 36.4ms
Opera 9.27
global : average : 79ms
local1 : average : 78.4ms
local2 : average : 79.2ms
local3 : average : 74.8ms
Opera 9.5
global : average : 51.4ms
local1 : average : 26.8ms
local2 : average : 35.6ms
local3 : average : 24ms
Safari 3.1
global : average : 90.8ms
local1 : average : 54.8ms
local2 : average : 44.8ms
local3 : average : 34.4ms
Webkit r33561
global : average : 17.8ms
local1 : average : 17.4ms
local2 : average : 16.4ms
local3 : average : 16ms
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Anthony Ricaud
The original blog post of the author for more information : http://flesler.blogspot.com/2008/04/benchmarking-javascript-variables-and.html
Mark Rowe (bdash)
Are there measurements that suggest SquirrelFish is a regression over trunk on this microbenchmark?
Oliver Hunt
Mark, this is basically the tracking bug for the multiscope optimisation, squirrelfish performance is currently effectively a faster version of S3.1 -- basically resolve time for an out of scope var is O(N) wrt to closure depth, vs. effectively O(1) on trunk
Oliver Hunt
(I'm actually working on this atm)
Oliver Hunt
resolve is corrected
Committing to http://svn.webkit.org/repository/webkit/branches/squirrelfish ...
M JavaScriptCore/ChangeLog
M JavaScriptCore/VM/CodeBlock.cpp
M JavaScriptCore/VM/CodeBlock.h
M JavaScriptCore/VM/CodeGenerator.cpp
M JavaScriptCore/VM/CodeGenerator.h
M JavaScriptCore/VM/Machine.cpp
M JavaScriptCore/VM/Opcode.h
M JavaScriptCore/kjs/JSVariableObject.h
Committed r33958
Looks to be twice as fast as in trunk, still have base resolution to go
Anthony Ricaud
Squirellfish branch r33967:
global : average : 9.6ms
local1 : average : 8.8ms
local2 : average : 8.4ms
local3 : average : 8ms
I think it's not regressing :)
Oliver Hunt
Last fix (for read/write/modify operations)
Committing to http://svn.webkit.org/repository/webkit/trunk ...
M JavaScriptCore/ChangeLog
M JavaScriptCore/kjs/nodes.cpp
Committed r34030
Oliver Hunt
*** Bug 18645 has been marked as a duplicate of this bug. ***
Oliver Hunt
*** Bug 18823 has been marked as a duplicate of this bug. ***