Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions src/FftSharp.Benchmark/Benchmarking.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,43 @@ To run the benchmarks navigate to the `src/FftSharp.Benchmark` directory and run
dotnet run -c Release
```

## Result 2026-07-05

### BluesteinSizeBenchmark

```
BenchmarkDotNet v0.15.8, macOS Sonoma 14.8.7 (23J520) [Darwin 23.6.0]
Intel Core i7-5557U CPU 3.10GHz (Broadwell), 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.301
[Host] : .NET 10.0.9 (10.0.9, 10.0.926.27113), X64 RyuJIT x86-64-v3
.NET 10.0 : .NET 10.0.9 (10.0.9, 10.0.926.27113), X64 RyuJIT x86-64-v3
```


| Method | Job | Runtime | DataLength | Mean | Error | StdDev | Median | Gen0 | Gen1 | Gen2 | Allocated |
|---------- |---------- |---------- |----------- |--------------:|-------------:|--------------:|-------------:|----------:|----------:|----------:|------------:|
| Bluestein | .NET 10.0 | .NET 10.0 | 100 | 30.73 us | 1.299 us | 3.600 us | 29.58 us | 14.3433 | - | - | 29.36 KB |
| Bluestein | .NET 10.0 | .NET 10.0 | 1000 | 275.22 us | 5.209 us | 14.347 us | 270.17 us | 110.8398 | 13.6719 | - | 239.48 KB |
| Bluestein | .NET 10.0 | .NET 10.0 | 10000 | 6,732.10 us | 99.484 us | 83.074 us | 6,700.31 us | 1000.0000 | 1000.0000 | 1000.0000 | 3641.37 KB |
| Bluestein | .NET 10.0 | .NET 10.0 | 100000 | 102,471.28 us | 5,240.613 us | 14,866.747 us | 95,601.33 us | 666.6667 | 666.6667 | 666.6667 | 29749.66 KB |

### FftBenchmark

```
BenchmarkDotNet v0.15.8, macOS Sonoma 14.8.7 (23J520) [Darwin 23.6.0]
Intel Core i7-5557U CPU 3.10GHz (Broadwell), 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.301
[Host] : .NET 10.0.9 (10.0.9, 10.0.926.27113), X64 RyuJIT x86-64-v3
.NET 10.0 : .NET 10.0.9 (10.0.9, 10.0.926.27113), X64 RyuJIT x86-64-v3
```


| Method | Job | Runtime | Mean | Error | StdDev | Gen0 | Allocated |
|------------------------ |---------- |---------- |----------:|---------:|---------:|---------:|----------:|
| FFT_Forward | .NET 10.0 | .NET 10.0 | 52.00 us | 0.198 us | 0.155 us | 3.9063 | 8.02 KB |
| FFT_ForwardReal | .NET 10.0 | .NET 10.0 | 51.75 us | 0.155 us | 0.121 us | 5.8594 | 12.06 KB |
| FFT_BluesteinComparason | .NET 10.0 | .NET 10.0 | 240.15 us | 4.644 us | 5.161 us | 109.1309 | 224.23 KB |

## Results 12/20/2023

### BluesteinSizeBenchmark
Expand Down
2 changes: 1 addition & 1 deletion src/FftSharp.Benchmark/BluesteinSizeBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
namespace FftSharp.Benchmark;

[MemoryDiagnoser]
[SimpleJob(RuntimeMoniker.Net60)]
[SimpleJob(RuntimeMoniker.Net80)]
[SimpleJob(RuntimeMoniker.Net10_0)]
public class BluesteinSizeBenchmark
{
private double[] Sample;
Expand Down
2 changes: 1 addition & 1 deletion src/FftSharp.Benchmark/FftBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
using BenchmarkDotNet.Jobs;

namespace FftSharp.Benchmark;
[SimpleJob(RuntimeMoniker.Net60)]
[SimpleJob(RuntimeMoniker.Net80)]
[SimpleJob(RuntimeMoniker.Net10_0)]
[MemoryDiagnoser]
public class FftBenchmark
{
Expand Down
6 changes: 3 additions & 3 deletions src/FftSharp.Benchmark/FftSharp.Benchmark.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<NoWarn>$(NoWarn);CA1018;CA5351;CA1825;CA8618</NoWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.11" />
<PackageReference Include="BenchmarkDotNet.Annotations" Version="0.13.11" />
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
<PackageReference Include="BenchmarkDotNet.Annotations" Version="0.15.8" />
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
</ItemGroup>

Expand Down
5 changes: 2 additions & 3 deletions src/FftSharp.Demo/FftSharp.Demo.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<TargetFramework>net10.0-windows</TargetFramework>
<OutputType>WinExe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWindowsForms>true</UseWindowsForms>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
<NoWarn>NU1701;CA1416</NoWarn>
</PropertyGroup>
<PropertyGroup>
Expand All @@ -17,11 +18,9 @@
<Content Include="icon.ico" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="NAudio" Version="2.2.1" />
<PackageReference Include="ScottPlot" Version="5.0.45" />
<PackageReference Include="ScottPlot.WinForms" Version="5.0.45" />
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
</ItemGroup>
</Project>
12 changes: 6 additions & 6 deletions src/FftSharp.Tests/FftSharp.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="nunit" Version="3.14.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0">
<PackageReference Include="nunit" Version="4.6.1" />
<PackageReference Include="NUnit3TestAdapter" Version="6.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="ScottPlot" Version="5.0.45" />
<PackageReference Include="System.Drawing.Common" Version="4.7.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageReference Include="ScottPlot" Version="5.0.56" />
<PackageReference Include="System.Drawing.Common" Version="10.0.9" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
</ItemGroup>

Expand Down
6 changes: 4 additions & 2 deletions src/FftSharp.Tests/LoadData.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Globalization;
using System.IO;
using System.Linq;

Expand All @@ -9,13 +10,14 @@ public static class LoadData
public static double[] Double(string fileName) =>
File.ReadLines($"../../../../../dev/data/{fileName}")
.Where(x => !x.StartsWith('#') && x.Length > 1)
.Select(x => double.Parse(x))
.Select(x => double.Parse(x, CultureInfo.InvariantCulture))
.ToArray();

public static System.Numerics.Complex[] Complex(string fileName) =>
File.ReadLines($"../../../../../dev/data/{fileName}")
.Select(x => x.Trim('(').Trim(')').Trim('j'))
.Select(x => x.Replace("-", " -").Replace("+", " +").Trim())
.Select(x => new System.Numerics.Complex(double.Parse(x.Split(' ')[0]), double.Parse(x.Split(' ')[1])))
.Select(x => new System.Numerics.Complex(double.Parse(x.Split(' ')[0], CultureInfo.InvariantCulture),
double.Parse(x.Split(' ')[1], CultureInfo.InvariantCulture)))
.ToArray();
}
3 changes: 1 addition & 2 deletions src/FftSharp/FftSharp.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net10.0</TargetFrameworks>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<OutputType>Library</OutputType>
<PackageProjectUrl>https://github.com/swharden/FftSharp</PackageProjectUrl>
Expand Down Expand Up @@ -42,7 +42,6 @@
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
<PackageReference Include="System.Memory" Version="4.6.0" />
</ItemGroup>

Expand Down