Some of the revisions between [r169699-169710] made a significant performance regression on Animation/balls:JSHeap Mac-MountainLion: 33.98% worse Mac-Mavericks: 14.18% worse EFL: 9.52% worse GTK: 56.66% worse WebKit: http://trac.webkit.org/log/?rev=169710&stop_rev=169699&verbose=on The graphs are here: https://perf.webkit.org/#mode=charts&chartList=[[%22efl%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22gtk%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-lion%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-mavericks%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-mountainlion%22%2C%22Animation%2Fballs%3AJSHeap%22]]
(In reply to comment #0) > Some of the revisions between [r169699-169710] made a significant performance regression on Animation/balls:JSHeap > > Mac-MountainLion: 33.98% worse > Mac-Mavericks: 14.18% worse > EFL: 9.52% worse > GTK: 56.66% worse > > > > WebKit: http://trac.webkit.org/log/?rev=169710&stop_rev=169699&verbose=on > > > The graphs are here: https://perf.webkit.org/#mode=charts&chartList=[[%22efl%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22gtk%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-lion%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-mavericks%22%2C%22Animation%2Fballs%3AJSHeap%22]%2C[%22mac-mountainlion%22%2C%22Animation%2Fballs%3AJSHeap%22]] Let's see if this link works: https://perf.webkit.org/#mode=charts&chartList=%5B%5B%22efl%22%2C%22Animation%2Fballs%3AJSHeap%22%5D%2C%5B%22gtk%22%2C%22Animation%2Fballs%3AJSHeap%22%5D%2C%5B%22mac-lion%22%2C%22Animation%2Fballs%3AJSHeap%22%5D%2C%5B%22mac-mavericks%22%2C%22Animation%2Fballs%3AJSHeap%22%5D%2C%5B%22mac-mountainlion%22%2C%22Animation%2Fballs%3AJSHeap%22%5D%5D Otherwise select: "Animation" / "balls:JSHeap" / "All platforms" and click on "Add chart"
There are more tests affected, for example Bindings/append-child:JSHeap https://perf.webkit.org/#mode=charts&chartList=%5B%5B%22efl%22%2C%22Bindings%2Fappend-child%3AJSHeap%22%5D%2C%5B%22gtk%22%2C%22Bindings%2Fappend-child%3AJSHeap%22%5D%2C%5B%22mac-lion%22%2C%22Bindings%2Fappend-child%3AJSHeap%22%5D%2C%5B%22mac-mavericks%22%2C%22Bindings%2Fappend-child%3AJSHeap%22%5D%2C%5B%22mac-mountainlion%22%2C%22Bindings%2Fappend-child%3AJSHeap%22%5D%5D Bindings/create-element:JSHeap https://perf.webkit.org/#mode=charts&chartList=%5B%5B%22efl%22%2C%22Bindings%2Fcreate-element%3AJSHeap%22%5D%2C%5B%22gtk%22%2C%22Bindings%2Fcreate-element%3AJSHeap%22%5D%2C%5B%22mac-lion%22%2C%22Bindings%2Fcreate-element%3AJSHeap%22%5D%2C%5B%22mac-mavericks%22%2C%22Bindings%2Fcreate-element%3AJSHeap%22%5D%2C%5B%22mac-mountainlion%22%2C%22Bindings%2Fcreate-element%3AJSHeap%22%5D%5D Bindings/document-implementation:JSHeap https://perf.webkit.org/#mode=charts&chartList=%5B%5B%22efl%22%2C%22Bindings%2Fdocument-implementation%3AJSHeap%22%5D%2C%5B%22gtk%22%2C%22Bindings%2Fdocument-implementation%3AJSHeap%22%5D%2C%5B%22mac-lion%22%2C%22Bindings%2Fdocument-implementation%3AJSHeap%22%5D%2C%5B%22mac-mavericks%22%2C%22Bindings%2Fdocument-implementation%3AJSHeap%22%5D%2C%5B%22mac-mountainlion%22%2C%22Bindings%2Fdocument-implementation%3AJSHeap%22%5D%5D etc...
I have bisected the interval and got r169703 as the revision that caused the regression. You can check here the bisection I did: http://people.igalia.com/clopez/wk133876/PerformanceTestsResults.html Click on memory at the top left. I only tested with one Performance test (Bindings/document-implementation.html) to do it faster, but all the other tests would give the same result related to JSHeap memory usage according to perf.webkit.org
It looks like the absolute size of the regression is 60kB - 100kB. Is that right? If so, I think those high percentages just indicate that the test doesn't use much JS memory -- not that something major has changed. In a test that does use a lot of JS memory, I would expect the memory impact of <http://trac.webkit.org/changeset/169703> to be much lower, percentage-wise, since one prototype is typically used by many client objects, making prototype memory a small fraction of heap memory. I think we can accept this delta.
(In reply to comment #4) > It looks like the absolute size of the regression is 60kB - 100kB. Is that right? If so, I think those high percentages just indicate that the test doesn't use much JS memory -- not that something major has changed. > > In a test that does use a lot of JS memory, I would expect the memory impact of <http://trac.webkit.org/changeset/169703> to be much lower, percentage-wise, since one prototype is typically used by many client objects, making prototype memory a small fraction of heap memory. > > I think we can accept this delta. Indeed. There is clearly a space/time tradeoff here, and I think 100kB is well within the acceptable range.