New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 712295 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit 26 days ago
Closed: Apr 2017
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

SurfaceAggregator's use of unordered_map is inefficient

Project Member Reported by brettw@chromium.org, Apr 17 2017

Issue description

On a memory profile (this is a debug build) I see 20326600 bytes in 253689 allocations in cc::SurfaceAggregator::PrewalkTree over the course of 10 minutes.

A big chunk of these are from the unordered_set in that function, which will allocate a 8-bucket hash table on the heap upon initialization.

I put a histogram in and browsed the web a bit and did not see any entries put in that set:

Histogram: SurfaceAggregator.FilterPasses recorded 34624 samples, mean = 0.0 (flags = 0x41)
0  ------------------------------------------------------------------------O (34624 = 100.0%)
1  ...


The other unordered maps and sets in that object are similarly underutilized:

Histogram: SurfaceAggregator.CopyPixelPasses_Clear recorded 2640 samples, mean = 0.0 (flags = 0x41)
0  ------------------------------------------------------------------------O (2631 = 99.7%)
1  O                                                                         (0 = 0.0%) {99.7%}
2  O                                                                         (9 = 0.3%) {99.7%}
3  ... 

Histogram: SurfaceAggregator.MovedPixelPasses_Clear recorded 2640 samples, mean = 0.0 (flags = 0x41)
0  ------------------------------------------------------------------------O (2640 = 100.0%)
1  ... 

Histogram: SurfaceAggregator.RenderPassDependencies_Clear recorded 2640 samples, mean = 1.0 (flags = 0x41)
0  -----------O                                                              (299 = 11.3%)
1  ------------------------------------------------------------------------O (1954 = 74.0%) {11.3%}
2  --------------O                                                           (387 = 14.7%) {85.3%}
3  ... 

Histogram: SurfaceAggregator.RenderPassDependencies_MemberInsert recorded 10378 samples, mean = 1.2 (flags = 0x41)
0  O                                                                         (0 = 0.0%)
1  ------------------------------------------------------------------------O (8584 = 82.7%) {0.0%}
2  ---------------O                                                          (1731 = 16.7%) {82.7%}
3  O                                                                         (21 = 0.2%) {99.4%}
4  O                                                                         (21 = 0.2%) {99.6%}
5  O                                                                         (21 = 0.2%) {99.8%}
6  ... 

Histogram: SurfaceAggregator.ValidSurfaces_Clear recorded 3440 samples, mean = 9.8 (flags = 0x41)
0   O                                                                         (2 = 0.1%)
1   -O                                                                        (9 = 0.3%) {0.1%}
2   ------------------------------O                                           (362 = 10.5%) {0.3%}
3   --------------------------------------------------O                       (611 = 17.8%) {10.8%}
4   --------------------------------------O                                   (463 = 13.5%) {28.6%}
5   -O                                                                        (11 = 0.3%) {42.1%}
6   ------O                                                                   (77 = 2.2%) {42.4%}
7   O                                                                         (0 = 0.0%) {44.6%}
8   -O                                                                        (17 = 0.5%) {44.6%}
9   O                                                                         (0 = 0.0%) {45.1%}
10  --O                                                                       (26 = 0.8%) {45.1%}
11  ---------------------O                                                    (253 = 7.4%) {45.9%}
12  ----------O                                                               (116 = 3.4%) {53.2%}
13  ------------------------------------------------------------------------O (879 = 25.6%) {56.6%}
14  O                                                                         (3 = 0.1%) {82.2%}
15  O                                                                         (6 = 0.2%) {82.2%}
16  O                                                                         (0 = 0.0%) {82.4%}
17  -O                                                                        (7 = 0.2%) {82.4%}
18  -O                                                                        (12 = 0.3%) {82.6%}
19  ---O                                                                      (31 = 0.9%) {83.0%}
20  -O                                                                        (8 = 0.2%) {83.9%}
21  -------------------------------------------O                              (528 = 15.3%) {84.1%}
22  --O                                                                       (19 = 0.6%) {99.4%}
23  ... 

Histogram: SurfaceAggregator.ContainedSurfaces.Clear recorded 3439 samples, mean = 9.8 (flags = 0x41)
0   O                                                                         (0 = 0.0%)
1   -O                                                                        (10 = 0.3%) {0.0%}
2   ------------------------------O                                           (362 = 10.5%) {0.3%}
3   --------------------------------------------------O                       (611 = 17.8%) {10.8%}
4   --------------------------------------O                                   (463 = 13.5%) {28.6%}
5   -O                                                                        (11 = 0.3%) {42.0%}
6   ------O                                                                   (77 = 2.2%) {42.4%}
7   O                                                                         (0 = 0.0%) {44.6%}
8   -O                                                                        (17 = 0.5%) {44.6%}
9   O                                                                         (0 = 0.0%) {45.1%}
10  --O                                                                       (26 = 0.8%) {45.1%}
11  ---------------------O                                                    (253 = 7.4%) {45.9%}
12  ----------O                                                               (116 = 3.4%) {53.2%}
13  ------------------------------------------------------------------------O (879 = 25.6%) {56.6%}
14  O                                                                         (3 = 0.1%) {82.1%}
15  O                                                                         (6 = 0.2%) {82.2%}
16  O                                                                         (0 = 0.0%) {82.4%}
17  -O                                                                        (7 = 0.2%) {82.4%}
18  -O                                                                        (12 = 0.3%) {82.6%}
19  ---O                                                                      (31 = 0.9%) {83.0%}
20  -O                                                                        (8 = 0.2%) {83.9%}
21  -------------------------------------------O                              (528 = 15.4%) {84.1%}
22  --O                                                                       (19 = 0.6%) {99.4%}
23  ...

Histogram: SurfaceAggregator.PreviousContainedSurfaces.Clear recorded 3439 samples, mean = 9.8 (flags = 0x41)
0   O                                                                         (2 = 0.1%)
1   -O                                                                        (9 = 0.3%) {0.1%}
2   ------------------------------O                                           (362 = 10.5%) {0.3%}
3   --------------------------------------------------O                       (611 = 17.8%) {10.8%}
4   --------------------------------------O                                   (463 = 13.5%) {28.6%}
5   -O                                                                        (11 = 0.3%) {42.1%}
6   ------O                                                                   (77 = 2.2%) {42.4%}
7   O                                                                         (0 = 0.0%) {44.6%}
8   -O                                                                        (17 = 0.5%) {44.6%}
9   O                                                                         (0 = 0.0%) {45.1%}
10  --O                                                                       (26 = 0.8%) {45.1%}
11  ---------------------O                                                    (253 = 7.4%) {45.9%}
12  ---------O                                                                (115 = 3.3%) {53.2%}
13  ------------------------------------------------------------------------O (879 = 25.6%) {56.6%}
14  O                                                                         (3 = 0.1%) {82.1%}
15  O                                                                         (6 = 0.2%) {82.2%}
16  O                                                                         (0 = 0.0%) {82.4%}
17  -O                                                                        (7 = 0.2%) {82.4%}
18  -O                                                                        (12 = 0.3%) {82.6%}
19  ---O                                                                      (31 = 0.9%) {83.0%}
20  -O                                                                        (8 = 0.2%) {83.9%}
21  -------------------------------------------O                              (528 = 15.4%) {84.1%}
22  --O                                                                       (19 = 0.6%) {99.4%}
23  ... 

Histogram: SurfaceAggregator.PrewalkResult_.UndrawnSurfaces.Clear recorded 896 samples, mean = 1.1 (flags = 0x41)
0  --------------------------------------------O                             (290 = 32.4%)
1  ------------------------------------------------------------------------O (480 = 53.6%) {32.4%}
2  ----------O                                                               (67 = 7.5%) {85.9%}
3  ... 
5  --O                                                                       (15 = 1.7%) {93.4%}
6  O                                                                         (1 = 0.1%) {95.1%}
7  --O                                                                       (15 = 1.7%) {95.2%}
8  ----O                                                                     (28 = 3.1%) {96.9%}
9  ... 

Histogram: SurfaceAggregator.RenderPassAllocatorMap recorded 25344 samples, mean = 9.3 (flags = 0x41)
0   O                                                                         (2 = 0.0%)
1   O                                                                         (32 = 0.1%) {0.0%}
2   -------------------O                                                      (2007 = 7.9%) {0.1%}
3   ----------O                                                               (1000 = 3.9%) {8.1%}
4   -----------------------------------O                                      (3647 = 14.4%) {12.0%}
5   -O                                                                        (78 = 0.3%) {26.4%}
6   ----O                                                                     (381 = 1.5%) {26.7%}
7   ----O                                                                     (406 = 1.6%) {28.2%}
8   -O                                                                        (121 = 0.5%) {29.8%}
9   O                                                                         (4 = 0.0%) {30.3%}
10  --------------------------------------------O                             (4569 = 18.0%) {30.3%}
11  O                                                                         (26 = 0.1%) {48.3%}
12  ------------------------------------------------------------------------O (7474 = 29.5%) {48.4%}
13  -----------------------------------------------------O                    (5484 = 21.6%) {77.9%}
14  -O                                                                        (113 = 0.4%) {99.6%}
15  ... 

These are small sets of integers. Flat_set should be more efficient than unordered maps for these workloads. Even the max of 22 integers are much faster to copy than do one memory allocation as a std::set/map.
 

Comment 1 by brettw@chromium.org, Apr 17 2017

Description: Show this description

Comment 2 by brettw@chromium.org, Apr 17 2017

Description: Show this description

Comment 3 by brettw@chromium.org, Apr 17 2017

Description: Show this description

Comment 4 by brettw@chromium.org, Apr 17 2017

Description: Show this description

Comment 5 by brettw@chromium.org, Apr 17 2017

Description: Show this description
Project Member

Comment 6 by bugdroid1@chromium.org, Apr 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/95286bcd87997785c90c4194d65a430d082bc784

commit 95286bcd87997785c90c4194d65a430d082bc784
Author: brettw <brettw@chromium.org>
Date: Mon Apr 17 22:09:33 2017

Use flat_set in SurfaceAggregator.

The sets and maks are typically small or empty and created once. flat_set and
flat_map will have better performance for these workloads.

See the bug for histograms of sizes.

BUG= 712295 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2823043002
Cr-Commit-Position: refs/heads/master@{#465040}

[modify] https://crrev.com/95286bcd87997785c90c4194d65a430d082bc784/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/95286bcd87997785c90c4194d65a430d082bc784/cc/surfaces/surface_aggregator.h

Comment 7 by brettw@chromium.org, Apr 17 2017

Status: Fixed (was: Started)
Project Member

Comment 8 by bugdroid1@chromium.org, Apr 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2ef85417acbbcbb4e8852bed450ea7ac3a5965b8

commit 2ef85417acbbcbb4e8852bed450ea7ac3a5965b8
Author: jbauman <jbauman@chromium.org>
Date: Mon Apr 17 23:48:36 2017

Use flat_set for ResourceIdSet

For DeclareUsedResourcesFromChild, the caller can accumulate into a
vector and create a flat_set from that.
ResourceProvider::wants_promotion_hints_set_ should always be small
(around 1 entry) so it should be more efficient as a flat_set.

Also remove Child::parent_to_child_map and store the child id directly
in the Resource, to avoid unnecessary map lookups on resource creation
and destruction.

This improves the performance of SurfaceAggregatorPerfTest.* by 25-30%

BUG= 712295 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2826583002
Cr-Commit-Position: refs/heads/master@{#465064}

[modify] https://crrev.com/2ef85417acbbcbb4e8852bed450ea7ac3a5965b8/cc/base/resource_id.h
[modify] https://crrev.com/2ef85417acbbcbb4e8852bed450ea7ac3a5965b8/cc/resources/resource_provider.cc
[modify] https://crrev.com/2ef85417acbbcbb4e8852bed450ea7ac3a5965b8/cc/resources/resource_provider.h
[modify] https://crrev.com/2ef85417acbbcbb4e8852bed450ea7ac3a5965b8/cc/surfaces/surface_aggregator.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/96a94ba94eb9a691ead21e134e28bbe6cd47580a

commit 96a94ba94eb9a691ead21e134e28bbe6cd47580a
Author: alexmos <alexmos@chromium.org>
Date: Tue Apr 18 00:03:57 2017

Revert of Use flat_set in SurfaceAggregator. (patchset #3 id:40001 of https://codereview.chromium.org/2823043002/ )

Reason for revert:
Seems to be causing several tests to fail:
https://build.chromium.org/p/chromium.chromiumos/builders/Linux%20ChromiumOS%20Tests%20%28dbg%29%281%29/builds/24975

Failure output:
../../build/linux/debian_jessie_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/debug/safe_iterator.210:
    error: attempt to construct a constant iterator from a singular mutable
    iterator.

Objects involved in the operation:
iterator "this" @ 0x0x7fff97b205a0 {
  state = dereferenceable;
  references sequence @ 0x0x7fff97b205a0
}
iterator "other" @ 0x0x7fff97b20878 {
  state = singular;
  references sequence @ 0x0x7fff97b20878
}
Received signal 6
#0 0x7f0cbdddb56b base::debug::StackTrace::StackTrace()
#1 0x7f0cbddda2ac base::debug::StackTrace::StackTrace()
#2 0x7f0cbdddb07f base::debug::(anonymous namespace)::StackDumpSignalHandler()
#3 0x7f0cbe22f330 <unknown>
#4 0x7f0ca248ac37 gsignal
#5 0x7f0ca248e028 abort
#6 0x7f0ca2adffe5 __gnu_debug::_Error_formatter::_M_error()
#7 0x7f0cb26be3ad _ZN11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKN2cc9SurfaceIdENSt9__cxx19986vectorIS4_SaIS4_EEEEENSt7__debug6vectorIS4_S9_EEEC2INS2_IPS4_SA_EEEERKNS0_IT_NS1_11__enable_ifIXsr3std10__are_sameISJ_SI_EE7__valueESE_E6__typeEEE
#8 0x7f0cb26ce1de cc::SurfaceAggregator::HandleSurfaceQuad()
#9 0x7f0cb26ce94f cc::SurfaceAggregator::CopyQuadsToPass()
#10 0x7f0cb26cf76e cc::SurfaceAggregator::CopyPasses()
#11 0x7f0cb26d1df6 cc::SurfaceAggregator::Aggregate()
#12 0x7f0cb268aacc cc::Display::DrawAndSwap()
#13 0x7f0cb269c3ab cc::DisplayScheduler::DrawAndSwap()
#14 0x7f0cb269baf6 cc::DisplayScheduler::AttemptDrawAndSwap()
#15 0x7f0cb269b3ef cc::DisplayScheduler::OnBeginFrameDeadline()
#16 0x7f0cb269c92b cc::DisplayScheduler::OnBeginFrameDerivedImpl()
#17 0x7f0cb2f1b179 cc::BeginFrameObserverBase::OnBeginFrame()
#18 0x7f0cb2f1cd96 cc::DelayBasedBeginFrameSource::OnTimerTick()
#19 0x7f0cb2f34d1a cc::DelayBasedTimeSource::OnTimerTick()
#20 0x7f0cb2d90107 _ZN4base8internal13FunctorTraitsIMN2cc28ScrollbarAnimationControllerEFvvEvE6InvokeIRKNS_7WeakPtrIS3_EEJEEEvS5_OT_DpOT0_
#21 0x7f0cb2f354da _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMN2cc20DelayBasedTimeSourceEFvvERKNS_7WeakPtrIS5_EEJEEEvOT_OT0_DpOT1_
#22 0x7f0cb2f35462 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc20DelayBasedTimeSourceEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#23 0x7f0cb2f353ac _ZN4base8internal7InvokerINS0_9BindStateIMN2cc20DelayBasedTimeSourceEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#24 0x7f0cb2d9044d _ZNKR4base8CallbackIFvvELNS_8internal8CopyModeE1ELNS2_10RepeatModeE1EE3RunEv
#25 0x7f0cb2d8fe29 base::CancelableCallback<>::Forward()
#26 0x7f0cb2d90107 _ZN4base8internal13FunctorTraitsIMN2cc28ScrollbarAnimationControllerEFvvEvE6InvokeIRKNS_7WeakPtrIS3_EEJEEEvS5_OT_DpOT0_
#27 0x7f0cb2d9005a _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMNS_18CancelableCallbackIFvvEEEKFvvERKNS_7WeakPtrIS6_EEJEEEvOT_OT0_DpOT1_
#28 0x7f0cb2d8ffe2 _ZN4base8internal7InvokerINS0_9BindStateIMNS_18CancelableCallbackIFvvEEEKFvvEJNS_7WeakPtrIS5_EEEEES4_E7RunImplIRKS7_RKSt5tupleIJS9_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#29 0x7f0cb2d8ff2c _ZN4base8internal7InvokerINS0_9BindStateIMNS_18CancelableCallbackIFvvEEEKFvvEJNS_7WeakPtrIS5_EEEEES4_E3RunEPNS0_13BindStateBaseE
#30 0x7f0cbdde126e _ZNO4base8CallbackIFvvELNS_8internal8CopyModeE0ELNS2_10RepeatModeE0EE3RunEv
#31 0x7f0cbdde0a61 base::debug::TaskAnnotator::RunTask()
#32 0x7f0cbde68f1e base::MessageLoop::RunTask()
#33 0x7f0cbde69184 base::MessageLoop::DeferOrRunPendingTask()
#34 0x7f0cbde6970c base::MessageLoop::DoDelayedWork()
#35 0x7f0cbde7ee68 base::MessagePumpGlib::Run()
#36 0x7f0cbde68b02 base::MessageLoop::RunHandler()
#37 0x7f0cbdf02a64 base::RunLoop::Run()
#38 0x000004f3de76 content::RunThisRunLoop()
#39 0x0000089f1d0e extensions::ResultCatcher::GetNextResult()
#40 0x000001657c6c ExtensionApiTest::RunExtensionTestImpl()
#41 0x000001657685 ExtensionApiTest::RunExtensionTest()
#42 0x000000d8d146 extensions::ContentScriptApiTest_ContentScriptExtensionIframe_Test::RunTestOnMainThread()
#43 0x000003db23d5 InProcessBrowserTest::RunTestOnMainThreadLoop()
#44 0x000004eb9764 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop()
#45 0x00000093c845 _ZN4base8internal13FunctorTraitsIM25RenderViewContextMenuBaseFvvEvE6InvokeIP21RenderViewContextMenuJEEEvS4_OT_DpOT0_
#46 0x00000093c761 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKM25RenderViewContextMenuBaseFvvEJP21RenderViewContextMenuEEEvOT_DpOT0_
#47 0x000004eba6a7 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#48 0x000004eba5ec _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#49 0x00000092405d _ZNKR4base8CallbackIFvvELNS_8internal8CopyModeE1ELNS2_10RepeatModeE1EE3RunEv
#50 0x000003e5880e ChromeBrowserMainParts::PreMainMessageLoopRunImpl()
#51 0x000003e57450 ChromeBrowserMainParts::PreMainMessageLoopRun()
#52 0x000001e20bab chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun()
#53 0x7f0cb55d2931 content::BrowserMainLoop::PreMainMessageLoopRun()
#54 0x7f0cb48e4af5 _ZN4base8internal13FunctorTraitsIMN7content13URLLoaderImplEFvvEvE6InvokeIPS3_JEEEvS5_OT_DpOT0_
#55 0x7f0cb55dbae1 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMN7content15BrowserMainLoopEFivEJPS5_EEEiOT_DpOT0_
#56 0x7f0cb55dba87 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEiOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#57 0x7f0cb55db9cc _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE
#58 0x7f0cb48cb4bd _ZNKR4base8CallbackIFvvELNS_8internal8CopyModeE1ELNS2_10RepeatModeE1EE3RunEv
#59 0x7f0cb60e53cb content::StartupTaskRunner::RunAllTasksNow()
#60 0x7f0cb55d0530 content::BrowserMainLoop::CreateStartupTasks()
#61 0x7f0cb55ded17 content::BrowserMainRunnerImpl::Initialize()
  r8: 00007f0ca28149d0  r9: 00007fff97b1ff98 r10: 0000000000000008 r11: 0000000000000202
 r12: 0000000000000002 r13: 00007fff97b28ea0 r14: 0000000000000000 r15: 0000000000000000
  di: 000000000000266d  si: 000000000000266d  bp: 00007fff97b20278  bx: 00007fff97b201f8
  dx: 0000000000000006  ax: 0000000000000000  cx: ffffffffffffffff  sp: 00007fff97b1ffe8
  ip: 00007f0ca248ac37 efl: 0000000000000202 cgf: 0000000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]

Original issue's description:
> Use flat_set in SurfaceAggregator.
>
> The sets and maks are typically small or empty and created once. flat_set and
> flat_map will have better performance for these workloads.
>
> See the bug for histograms of sizes.
>
> BUG= 712295 
> CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
>
> Review-Url: https://codereview.chromium.org/2823043002
> Cr-Commit-Position: refs/heads/master@{#465040}
> Committed: https://chromium.googlesource.com/chromium/src/+/95286bcd87997785c90c4194d65a430d082bc784

TBR=jbauman@chromium.org,brettw@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 712295 

Review-Url: https://codereview.chromium.org/2824953002
Cr-Commit-Position: refs/heads/master@{#465068}

[modify] https://crrev.com/96a94ba94eb9a691ead21e134e28bbe6cd47580a/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/96a94ba94eb9a691ead21e134e28bbe6cd47580a/cc/surfaces/surface_aggregator.h

Project Member

Comment 10 by bugdroid1@chromium.org, Apr 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1ac5a973f47b2052df313bab17da120fae22190e

commit 1ac5a973f47b2052df313bab17da120fae22190e
Author: brettw <brettw@chromium.org>
Date: Tue Apr 18 19:22:10 2017

Use flat_set in SurfaceAggregator.

The sets and maps are typically small or empty and created once. flat_set and
flat_map will have better performance for these workloads.

See the bug for histograms of sizes.

Reland of https://codereview.chromium.org/2823043002 with fix.

BUG= 712295 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
TBR=jbauman@chromium.org

Review-Url: https://codereview.chromium.org/2821353002
Cr-Commit-Position: refs/heads/master@{#465324}

[modify] https://crrev.com/1ac5a973f47b2052df313bab17da120fae22190e/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/1ac5a973f47b2052df313bab17da120fae22190e/cc/surfaces/surface_aggregator.h

Project Member

Comment 11 by bugdroid1@chromium.org, Apr 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1166f4428a18a1cacdeb9e4c310ee7b96cda63b6

commit 1166f4428a18a1cacdeb9e4c310ee7b96cda63b6
Author: ojan <ojan@chromium.org>
Date: Tue Apr 18 23:03:51 2017

Revert of Use flat_set in SurfaceAggregator. (patchset #3 id:40001 of https://codereview.chromium.org/2821353002/ )

Reason for revert:
Broke cc_unittests SurfaceAggregatorWithResourcesTest.SecureOutputTexture.

https://build.chromium.org/p/chromium.win/builders/Win7%20Tests%20%28dbg%29%281%29/builds/59212

https://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20%28dbg%29%281%29/builds/62502

Original issue's description:
> Use flat_set in SurfaceAggregator.
>
> The sets and maps are typically small or empty and created once. flat_set and
> flat_map will have better performance for these workloads.
>
> See the bug for histograms of sizes.
>
> Reland of https://codereview.chromium.org/2823043002 with fix.
>
> BUG= 712295 
> CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
> TBR=jbauman@chromium.org
>
> Review-Url: https://codereview.chromium.org/2821353002
> Cr-Commit-Position: refs/heads/master@{#465324}
> Committed: https://chromium.googlesource.com/chromium/src/+/1ac5a973f47b2052df313bab17da120fae22190e

TBR=jbauman@chromium.org,danakj@chromium.org,brettw@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 712295 

Review-Url: https://codereview.chromium.org/2826823002
Cr-Commit-Position: refs/heads/master@{#465413}

[modify] https://crrev.com/1166f4428a18a1cacdeb9e4c310ee7b96cda63b6/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/1166f4428a18a1cacdeb9e4c310ee7b96cda63b6/cc/surfaces/surface_aggregator.h

Project Member

Comment 12 by bugdroid1@chromium.org, Apr 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8dd06bbc3fd157da89a7ed820b306d39ebea64e2

commit 8dd06bbc3fd157da89a7ed820b306d39ebea64e2
Author: brettw <brettw@chromium.org>
Date: Wed Apr 19 18:51:51 2017

Use flat_set in SurfaceAggregator.

The sets and maps are typically small or empty and created once. flat_set and
flat_map will have better performance for these workloads.

See the bug for histograms of sizes.

Reland of https://codereview.chromium.org/2821353002 with fix.
Reland of https://codereview.chromium.org/2823043002 with fix.

BUG= 712295 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
TBR=jbauman@chromium.org

Review-Url: https://codereview.chromium.org/2831663002
Cr-Commit-Position: refs/heads/master@{#465681}

[modify] https://crrev.com/8dd06bbc3fd157da89a7ed820b306d39ebea64e2/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/8dd06bbc3fd157da89a7ed820b306d39ebea64e2/cc/surfaces/surface_aggregator.h

Sign in to add a comment