Bug 14808 - REGRESSION: Significant slowdown with hang while signing into newsgator.com
Summary: REGRESSION: Significant slowdown with hang while signing into newsgator.com
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 523.x (Safari 3)
Hardware: All All
: P1 Normal
Assignee: Nobody
URL: http://www.newsgator.com/
Keywords: InRadar, Regression
Depends on:
Blocks:
 
Reported: 2007-07-29 15:35 PDT by Matt Lilek
Modified: 2007-08-19 23:19 PDT (History)
4 users (show)

See Also:


Attachments
full sample (181.59 KB, text/plain)
2007-07-29 15:38 PDT, Matt Lilek
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Lilek 2007-07-29 15:35:45 PDT
Between Safari 3.0.2 Beta and ToT, signing into newsgator.com (using their 'beta' reader, haven't tried the 'classic' one) has slowed significantly. On my 1.2GHz G4 machine, a local debug build of r24761 hangs Safari for about a minute, the latest nightly (also r24761) for about 30 seconds while Safari 3.0.2 Beta only takes roughly 5 seconds.  My significantly faster Windows box also shows a large slowdown between 3.0.2 Beta and ToT.

I've created an account with the username/password of webkit/webkit for testing.  The number of feeds does not seem to matter - the WebKit test account only has 1 feed while my personal one has about 85 with roughly the same hang time for each.

r24761 debug sample:
Sort by top of stack, same collapsed (when >= 5):
        mach_msg_trap        863
        select        288
        semaphore_wait_signal_trap        288
        KJS::PropertyMap::mark() const        56
        KJS::JSImmediate::isImmediate(KJS::JSValue const*)        28
        KJS::Collector::collect()        26
        KJS::JSImmediate::getTag(KJS::JSValue const*)        23
        KJS::JSValue::mark()        20
        KJS::Collector::cellBlock(KJS::JSCell const*)        16
        KJS::Collector::cellOffset(KJS::JSCell const*)        13
        KJS::CollectorBitmap::get(unsigned long) const        13
        KJS::Collector::isCellMarked(KJS::JSCell const*)        11
        KJS::JSValue::asCell() const        11
        KJS::JSValue::marked() const        9
        KJS::JSValue::asCell()        8
        KJS::Collector::markCell(KJS::JSCell*)        7
        KJS::JSCell::marked() const        7
        KJS::ArrayInstance::mark()        5
        KJS::Collector::cellBlock(KJS::JSCell*)        5
        KJS::CollectorBitmap::set(unsigned long)        5
Comment 1 Matt Lilek 2007-07-29 15:38:34 PDT
Created attachment 15730 [details]
full sample
Comment 2 David Kilzer (:ddkilzer) 2007-07-29 15:56:27 PDT
<rdar://problem/5368990>
Comment 3 John Moe 2007-07-29 16:53:40 PDT
The large string extra cost thing is making it garbage collect about ever ninth allocate (and unfortunately it does 120,000 allocates).  It ends up spending almost 5 seconds in the garbage collector while signing in.  Maybe the cost for the big strings should be a bit lower?  (I tried dividing the costs by 10 and the garbage collection time dropped to under a half second, but I suppose memory consumption was higher.)
Comment 4 mitz 2007-08-05 06:58:29 PDT
Fixed by Maciej in <http://trac.webkit.org/projects/webkit/changeset/24873>.