Files
QuanTAlib/benchmark/growthBench.cs
T
Miha Kralj 148f0ea846 dependabot
2024-09-26 10:44:09 -07:00

73 lines
1.6 KiB
C#

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
namespace QuanTAlib;
public class Program
{
public static void Main(string[] args)
{
var config = DefaultConfig.Instance
.WithOption(ConfigOptions.DisableOptimizationsValidator, true);
BenchmarkRunner.Run<EmaBenchmark>(config);
}
}
[MemoryDiagnoser]
[SimpleJob(RuntimeMoniker.Net80, launchCount: 1, warmupCount: 3, iterationCount: 5)]
public class EmaBenchmark
{
private const int Period = 10;
private const int Length = 100_000;
private GbmFeed gbm = null!;
private TSeries inputs = null!;
[GlobalSetup]
public void Setup()
{
gbm = new GbmFeed();
inputs = new();
for (int i = 0; i < Length; i++)
{
TBar item = gbm.Generate(DateTime.Now);
inputs.Add(new TValue(item.Time, item.Close, true, true));
}
}
[Benchmark]
public void Ema_bench()
{
Ema ma1 = new(Period);
for (int i = 0; i < Length; i++)
{
TValue item = gbm.Generate(DateTime.Now).Close;
ma1.Calc(item);
}
}
[Benchmark]
public void Alma_bench()
{
Alma ma1 = new(Period);
for (int i = 0; i < Length; i++)
{
TValue item = gbm.Generate(DateTime.Now).Close;
ma1.Calc(item);
}
}
[Benchmark]
public void Dema_bench()
{
Dema ma1 = new(Period);
for (int i = 0; i < Length; i++)
{
TValue item = gbm.Generate(DateTime.Now).Close;
ma1.Calc(item);
}
}
}