mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-01 03:07:43 +00:00
73 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |