From c34435b9582f12aec950d75e984ecd63f8792fc9 Mon Sep 17 00:00:00 2001 From: Shaun Tonstad Date: Sat, 12 Oct 2024 13:01:53 -0500 Subject: [PATCH 1/2] Remove CustomUpdateData heap allocation in OnUpdate hot path. Added CustomUpdateData.Empty property. Remove CustomUpdateData heap allocation in OnUpdate hot path. Added CustomUpdateData.Empty property. --- RGB.NET.Core/Update/AbstractUpdateTrigger.cs | 4 ++-- RGB.NET.Core/Update/CustomUpdateData.cs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/RGB.NET.Core/Update/AbstractUpdateTrigger.cs b/RGB.NET.Core/Update/AbstractUpdateTrigger.cs index 974e0b0..22dcca7 100644 --- a/RGB.NET.Core/Update/AbstractUpdateTrigger.cs +++ b/RGB.NET.Core/Update/AbstractUpdateTrigger.cs @@ -29,13 +29,13 @@ public abstract class AbstractUpdateTrigger : AbstractBindable, IUpdateTrigger /// Invokes the -event. /// /// Optional custom-data passed to the subscribers of the .event. - protected virtual void OnStartup(CustomUpdateData? updateData = null) => Starting?.Invoke(this, updateData ?? new CustomUpdateData()); + protected virtual void OnStartup(CustomUpdateData? updateData = null) => Starting?.Invoke(this, updateData ?? CustomUpdateData.Empty); /// /// Invokes the -event. /// /// Optional custom-data passed to the subscribers of the .event. - protected virtual void OnUpdate(CustomUpdateData? updateData = null) => Update?.Invoke(this, updateData ?? new CustomUpdateData()); + protected virtual void OnUpdate(CustomUpdateData? updateData = null) => Update?.Invoke(this, updateData ?? CustomUpdateData.Empty); /// public abstract void Start(); diff --git a/RGB.NET.Core/Update/CustomUpdateData.cs b/RGB.NET.Core/Update/CustomUpdateData.cs index 736723a..27b1f52 100644 --- a/RGB.NET.Core/Update/CustomUpdateData.cs +++ b/RGB.NET.Core/Update/CustomUpdateData.cs @@ -51,6 +51,7 @@ public interface ICustomUpdateData public sealed class CustomUpdateData : ICustomUpdateData { #region Properties & Fields + public static readonly CustomUpdateData Empty = new CustomUpdateData(); private readonly Dictionary _data = []; From da51871e0494073efc97db348f4633d045f7e800 Mon Sep 17 00:00:00 2001 From: Shaun Tonstad Date: Tue, 29 Oct 2024 20:19:29 -0500 Subject: [PATCH 2/2] Update RGB.NET.Core/Update/CustomUpdateData.cs Co-authored-by: DarthAffe --- RGB.NET.Core/Update/CustomUpdateData.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RGB.NET.Core/Update/CustomUpdateData.cs b/RGB.NET.Core/Update/CustomUpdateData.cs index 27b1f52..0d85aa7 100644 --- a/RGB.NET.Core/Update/CustomUpdateData.cs +++ b/RGB.NET.Core/Update/CustomUpdateData.cs @@ -51,7 +51,9 @@ public interface ICustomUpdateData public sealed class CustomUpdateData : ICustomUpdateData { #region Properties & Fields - public static readonly CustomUpdateData Empty = new CustomUpdateData(); + + // ReSharper disable once InconsistentNaming + public static readonly CustomUpdateData Empty = new(); private readonly Dictionary _data = [];