refactor: optimize event args handling for performance improvements

This commit is contained in:
Miha Kralj
2025-12-28 17:21:53 -08:00
parent a64cc1c224
commit ad6eebf812
47 changed files with 59 additions and 51 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ public sealed class Alma : AbstractBase, IDisposable
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public void Dispose()
{
+1 -1
View File
@@ -319,7 +319,7 @@ public sealed class Bessel : AbstractBase, IDisposable
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override void Reset()
{
+1 -1
View File
@@ -117,7 +117,7 @@ public sealed class Bilateral : AbstractBase
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Handle(object? sender, TValueEventArgs args) => Update(args.Value, args.IsNew);
private void Handle(object? sender, in TValueEventArgs args) => Update(args.Value, args.IsNew);
public override TSeries Update(TSeries source)
{
+1 -1
View File
@@ -50,7 +50,7 @@ public sealed class Blma : AbstractBase, IDisposable
}
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -42,7 +42,7 @@ public sealed class Butter : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -66,7 +66,7 @@ public sealed class Conv : AbstractBase, IDisposable
}
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private double GetValidValue(double input)
+1 -1
View File
@@ -1,4 +1,4 @@
using Xunit;
using Xunit;
using TradingPlatform.BusinessLayer;
namespace QuanTAlib.Tests;
+1 -1
View File
@@ -337,5 +337,5 @@ public sealed class Dema : AbstractBase, IDisposable
}
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
}
+1 -1
View File
@@ -90,7 +90,7 @@ public sealed class Dwma : AbstractBase
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -182,7 +182,7 @@ public sealed class Ema : AbstractBase
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private double GetValidValue(double input)
+1 -1
View File
@@ -117,7 +117,7 @@ public sealed class Hma : AbstractBase
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -253,7 +253,7 @@ public sealed class Htit : AbstractBase
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -292,7 +292,7 @@ public sealed class Jma : AbstractBase
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args) => Update(args.Value, args.IsNew);
private void Handle(object? sender, in TValueEventArgs args) => Update(args.Value, args.IsNew);
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
+1 -1
View File
@@ -208,7 +208,7 @@ public sealed class Kama : AbstractBase
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args)
private void Handle(object? sender, in TValueEventArgs args)
{
Update(args.Value, args.IsNew);
}
+1 -1
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using OoplesFinance.StockIndicators;
+1 -1
View File
@@ -87,7 +87,7 @@ public sealed class Lsma : AbstractBase, IDisposable
_source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private double GetValidValue(double input)
+1 -1
View File
@@ -80,7 +80,7 @@ public sealed class Mama : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Init()
{
+1 -1
View File
@@ -49,7 +49,7 @@ public sealed class Mgdi : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Init()
{
+1 -1
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Drawing;
using System.Runtime.CompilerServices;
using TradingPlatform.BusinessLayer;
+1 -1
View File
@@ -62,7 +62,7 @@ public sealed class Pwma : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private double GetValidValue(double input, double lastValid)
+1 -1
View File
@@ -80,7 +80,7 @@ public sealed class Rma : AbstractBase
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override TValue Update(TValue input, bool isNew = true)
{
+1 -1
View File
@@ -71,7 +71,7 @@ public sealed class Sma : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
/////////////////////////////////////////////////////////////////////////////////////////////////
// Mode B: Streaming (Stateful)
+1 -1
View File
@@ -77,7 +77,7 @@ public sealed class Ssf : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override bool IsHot => _state.IsHot;
+1 -1
View File
@@ -108,7 +108,7 @@ public sealed class T3 : AbstractBase, IDisposable
_publisher.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
/// <summary>
/// True if the T3 has been initialized (received at least one value).
+1 -1
View File
@@ -85,7 +85,7 @@ public sealed class Tema : AbstractBase
_handler = Handle;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
/// <summary>
/// Initializes the indicator state using the provided history.
+1 -1
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using Skender.Stock.Indicators;
+1 -1
View File
@@ -99,7 +99,7 @@ public sealed class Trima : AbstractBase, IDisposable
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs args) => Update(args.Value, args.IsNew);
private void Handle(object? sender, in TValueEventArgs args) => Update(args.Value, args.IsNew);
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{
+1 -1
View File
@@ -73,7 +73,7 @@ public sealed class Usf : AbstractBase
source.Pub += _handler;
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override bool IsHot => _state.IsHot;
+1 -1
View File
@@ -72,7 +72,7 @@ public sealed class Vidya : AbstractBase, IDisposable
}
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override bool IsHot => _state.BarCount >= _period;
+1 -1
View File
@@ -194,7 +194,7 @@ public sealed class Wma : AbstractBase, IDisposable
return new TSeries(t, v);
}
private void Handle(object? sender, TValueEventArgs e) => Update(e.Value, e.IsNew);
private void Handle(object? sender, in TValueEventArgs e) => Update(e.Value, e.IsNew);
public override void Prime(ReadOnlySpan<double> source, TimeSpan? step = null)
{