Bug 17770

Summary: JavaScript execution is dramatically slower while Drosera is attached
Product: WebKit Reporter: Adam Roben (:aroben) <aroben>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: CLOSED WONTFIX    
Severity: Normal CC: bfattori
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 10688, 17778    

Adam Roben (:aroben)
Reported 2008-03-11 09:25:02 PDT
JavaScript execution is dramatically slower while Drosera is attached. It's likely that much of this slowness is due to WebKit making a cross-process call to Drosera for every line of JavaScript executed, even if Drosera has no breakpoints set.
Attachments
Adam Roben (:aroben)
Comment 1 2008-03-11 09:25:59 PDT
Adam Roben (:aroben)
Comment 2 2008-03-12 23:27:37 PDT
One possible way we could solve this would be for WebKit to be aware of Drosera's breakpoints and only make cross-process calls when a breakpoint is hit or Drosera requests that we step. Another possible way to solve this would be to move debugging to be in-process (as covered by bug 17134).
Adam Roben (:aroben)
Comment 3 2008-03-13 22:39:54 PDT
*** Bug 17554 has been marked as a duplicate of this bug. ***
Adam Roben (:aroben)
Comment 4 2008-04-17 10:52:33 PDT
While a lot of the slowness surely comes from the cross-process calls, some of it definitely comes from WebCore/JSC's debugger infrastructure. Adding a single no-op JavaScriptDebugListener to WebCore's JavaScriptDebugServer caused SunSpider to be 2.42x as slow. Here are the actual results: Without a JavaScriptDebugListener: http://webkit.decenturl.com/sunspider-without-javascriptdebuglis With a JavaScriptDebugListener: http://webkit.decenturl.com/sunspider-with-a-javascriptdebuglist
Adam Roben (:aroben)
Comment 5 2008-04-17 11:19:35 PDT
I just tried this with Firefox 2 and Firebug. The performance was not significantly different when Firebug was disabled vs. enabled. Firebug disabled: http://webkit.decenturl.com/sunspider-without-firebug Firebug enabled: http://webkit.decenturl.com/sunspider-with-firebug
Adam Roben (:aroben)
Comment 6 2008-04-18 10:50:31 PDT
Strangely, changing JavaScriptDebugListener to use const KJS::UString& instead of const String& did not improve performance on SunSpider at all, even though it should reduce the number of strings allocated.
Kevin McCullough
Comment 7 2008-05-16 14:04:55 PDT
Drosera is going away and JS debugging is now happening in the WebInspector.
Timothy Hatcher
Comment 8 2008-05-17 09:56:09 PDT
Closing since Drosera has been replaced by the new Web Inspector debugger. Moving to the New Bugs component so the Drosera component can be closed and removed.
Note You need to log in before you can comment on or make changes to this bug.