VisualAffectsRenderBenchmarks.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Avalonia.Controls;
  2. using Avalonia.Media;
  3. using BenchmarkDotNet.Attributes;
  4. namespace Avalonia.Benchmarks.Visuals;
  5. [MemoryDiagnoser]
  6. public class VisualAffectsRenderBenchmarks
  7. {
  8. private readonly TestVisual _target;
  9. private readonly IPen _pen;
  10. public VisualAffectsRenderBenchmarks()
  11. {
  12. _target = new TestVisual();
  13. _pen = new Pen(Brushes.Black);
  14. }
  15. [Benchmark]
  16. public void SetPropertyThatAffectsRender()
  17. {
  18. _target.Pen = _pen;
  19. _target.Pen = null;
  20. }
  21. private class TestVisual : Visual
  22. {
  23. /// <summary>
  24. /// Defines the <see cref="Pen"/> property.
  25. /// </summary>
  26. public static readonly StyledProperty<IPen> PenProperty =
  27. AvaloniaProperty.Register<Border, IPen>(nameof(Pen));
  28. public IPen Pen
  29. {
  30. get => GetValue(PenProperty);
  31. set => SetValue(PenProperty, value);
  32. }
  33. static TestVisual()
  34. {
  35. AffectsRender<TestVisual>(PenProperty);
  36. }
  37. }
  38. }