| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- using System;
- using System.Runtime.CompilerServices;
- using Avalonia.Controls;
- using Avalonia.Threading;
- using Avalonia.UnitTests;
- using BenchmarkDotNet.Attributes;
- namespace Avalonia.Benchmarks.Layout
- {
- [MemoryDiagnoser]
- public class ControlsBenchmark : IDisposable
- {
- private readonly IDisposable _app;
- private readonly TestRoot _root;
- public ControlsBenchmark()
- {
- _app = UnitTestApplication.Start(
- TestServices.StyledWindow.With(
- renderInterface: new NullRenderingPlatform(),
- dispatcherImpl: new NullThreadingPlatform(),
- standardCursorFactory: new NullCursorFactory()));
- _root = new TestRoot(true, null)
- {
- Renderer = new NullRenderer()
- };
- _root.LayoutManager.ExecuteInitialLayoutPass();
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateCalendar()
- {
- var calendar = new Calendar();
- _root.Child = calendar;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateCalendarWithLoaded()
- {
- using var subscription = Control.LoadedEvent.AddClassHandler<Control>((c, s) => { });
- var calendar = new Calendar();
- _root.Child = calendar;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateControl()
- {
- var control = new Control();
-
- _root.Child = control;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateDecorator()
- {
- var control = new Decorator();
-
- _root.Child = control;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateScrollViewer()
- {
- var control = new ScrollViewer();
-
- _root.Child = control;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateButton()
- {
- var button = new Button();
- _root.Child = button;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- [Benchmark]
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void CreateTextBox()
- {
- var textBox = new TextBox();
- _root.Child = textBox;
- _root.LayoutManager.ExecuteLayoutPass();
- Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
- }
- public void Dispose()
- {
- _app.Dispose();
- }
- }
- }
|