From 6700fd851b8196b34d053bd4956906a6ee6f6c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20Komosi=C5=84ski?= Date: Thu, 14 Apr 2022 19:12:16 +0200 Subject: [PATCH] Add a benchmark case for affects render. --- .../Visuals/VisualAffectsRenderBenchmarks.cs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 tests/Avalonia.Benchmarks/Visuals/VisualAffectsRenderBenchmarks.cs diff --git a/tests/Avalonia.Benchmarks/Visuals/VisualAffectsRenderBenchmarks.cs b/tests/Avalonia.Benchmarks/Visuals/VisualAffectsRenderBenchmarks.cs new file mode 100644 index 0000000000..4a7c842249 --- /dev/null +++ b/tests/Avalonia.Benchmarks/Visuals/VisualAffectsRenderBenchmarks.cs @@ -0,0 +1,45 @@ +using Avalonia.Controls; +using Avalonia.Media; +using BenchmarkDotNet.Attributes; + +namespace Avalonia.Benchmarks.Visuals; + +[MemoryDiagnoser] +public class VisualAffectsRenderBenchmarks +{ + private readonly TestVisual _target; + private readonly IPen _pen; + + public VisualAffectsRenderBenchmarks() + { + _target = new TestVisual(); + _pen = new Pen(Brushes.Black); + } + + [Benchmark] + public void SetPropertyThatAffectsRender() + { + _target.Pen = _pen; + _target.Pen = null; + } + + private class TestVisual : Visual + { + /// + /// Defines the property. + /// + public static readonly StyledProperty PenProperty = + AvaloniaProperty.Register(nameof(Pen)); + + public IPen Pen + { + get { return GetValue(PenProperty); } + set { SetValue(PenProperty, value); } + } + + static TestVisual() + { + AffectsRender(PenProperty); + } + } +}