int foo();int fiver(int num) { for(int j = 0; j < 5; j++) num = num + foo(); return num;}
inline int foo() { return 3; };int fiver_inline(int num) { for(int j = 0; j < 5; j++) num = num + foo(); return num;}
int fiver_inline(int num) { for(int j = 0; j < 5; j++) num = num + 3; return num;}
return num + 15;
g.c extern int f1(); extern int f2(); extern int f3(); int g() { f1(); for(..) { f3(); } f1(); f2();}
RenderingNG’s architecture implements performance isolation for all of these features.
RegEnumValueWStub
base::win::RegistryValueIterator::Read()
gfx::`anonymous namespace\'::CachedFontLinkSettings::GetLinkedFonts
gfx::internal::LinkedFontsIterator::GetLinkedFonts()
gfx::internal::LinkedFontsIterator::NextFont(gfx::Font *)
gfx::GetFallbackFonts(gfx::Font const &)
gfx::RenderTextHarfBuzz::ShapeRuns(...)
gfx::RenderTextHarfBuzz::ItemizeAndShapeText(...)
gfx::RenderTextHarfBuzz::EnsureLayoutRunList()
gfx::RenderTextHarfBuzz::EnsureLayout()
gfx::RenderTextHarfBuzz::GetStringSizeF()
gfx::RenderTextHarfBuzz::GetStringSize()
OmniboxTextView::CalculatePreferredSize()
OmniboxTextView::ReapplyStyling()
OmniboxTextView::SetText...)
OmniboxResultView::Invalidate()
OmniboxResultView::SetMatch(AutocompleteMatch const &)
OmniboxPopupContentsView::UpdatePopupAppearance()
OmniboxPopupModel::OnResultChanged()
OmniboxEditModel::OnCurrentMatchChanged()
OmniboxController::OnResultChanged(bool)
AutocompleteController::UpdateResult(bool,bool)
AutocompleteController::Start(AutocompleteInput const &)
(...)
Here's a closer look at memory usage in the browser process for Windows as the M89 release began rolling out in early March:
Before: 458 ms (432 ms of which were in Lock/Unlock/KiPageFault)After: 27 ms
Before: 30 allocations per second of 1.32 MB (one per frame, running at 30 fps - a higher framerate would mean more allocations), totalling 396 MB over 10 secondsAfter: 0 allocations
Before: 36 msAfter: 0 ms