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);
}
}
}