WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
ASSIGNED
52832
New float positioning is O(k*n^2) for n k-height floats
https://bugs.webkit.org/show_bug.cgi?id=52832
Summary
New float positioning is O(k*n^2) for n k-height floats
mitz
Reported
2011-01-20 12:24:38 PST
<
rdar://problem/8534202
> Positioning a single new float is pretty bad. It is as bad as O(k*n) where n is the number of already-placed floats and k is the height of the last float. The *RelOffset() is O(n) and the inner while loop in positionNewFloats() can end up calling *RelOffset() up to k times, since strangely if there are no interfering floats on one side, the remainingHeight for that side is set to 1, and so we advance k times. That’s just bizarre. So we end up with positioning n floats being O(k*n^2).
Attachments
This would help?
(1.36 KB, patch)
2011-03-22 13:26 PDT
,
Dave Hyatt
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Dave Hyatt
Comment 1
2011-03-22 13:26:18 PDT
Created
attachment 86497
[details]
This would help?
Ahmad Saleem
Comment 2
2023-09-27 16:03:56 PDT
@Alan - is this optimisation still applicable or required? We don't have it applied:
https://searchfox.org/wubkat/source/Source/WebCore/rendering/RenderBlockFlow.cpp#2721
if (RenderStyle::usedFloat(childBox) == UsedFloat::Left) { LayoutUnit heightRemainingLeft = 1_lu; LayoutUnit heightRemainingRight = 1_lu;
alan
Comment 3
2023-09-28 07:05:35 PDT
This change may not help too much anymore as most of the floats are positioned by LFC's FloatingContext but the bug report may still be valid (for the new float code).
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug