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 => GetValue(PenProperty); set => SetValue(PenProperty, value); } static TestVisual() { AffectsRender(PenProperty); } } }