diff --git a/src/Prowlarr.Benchmark.Test/ParserTests/DateTimeUtilFixture.cs b/src/Prowlarr.Benchmark.Test/ParserTests/DateTimeUtilFixture.cs new file mode 100644 index 000000000..a5dde8213 --- /dev/null +++ b/src/Prowlarr.Benchmark.Test/ParserTests/DateTimeUtilFixture.cs @@ -0,0 +1,46 @@ +using System; +using System.Globalization; +using BenchmarkDotNet.Attributes; +using NzbDrone.Core.Parser; + +namespace NzbDrone.Benchmark.Test.ParserTests +{ + [InProcess] + public class DateTimeUtilFixture + { + [Benchmark] + [Arguments("2022-08-08 02:07:39")] + public void parse_fuzzy_date(string dateInput) + { + DateTimeUtil.FromFuzzyTime(dateInput); + } + + [Benchmark] + [Arguments("18 hours ago")] + public void parse_time_ago(string dateInput) + { + DateTimeUtil.FromTimeAgo(dateInput); + } + + [Benchmark] + [Arguments("2022-08-08 02:07:39")] + public void parse_unknown_date(string dateInput) + { + DateTimeUtil.FromUnknown(dateInput); + } + + [Benchmark] + [Arguments("2022-08-08 02:07:39 -02:00", "2006-01-02 15:04:05 -07:00")] + public void parse_datetime_golang(string dateInput, string format) + { + DateTimeUtil.ParseDateTimeGoLang(dateInput, format); + } + + [Benchmark] + [Arguments("2022-08-08 02:07:39 -02:00", "yyyy-MM-dd HH:mm:ss zzz")] + public void parse_datetime_exact(string dateInput, string format) + { + DateTime.ParseExact(dateInput, format, CultureInfo.InvariantCulture); + } + } +} diff --git a/src/Prowlarr.Benchmark.Test/Program.cs b/src/Prowlarr.Benchmark.Test/Program.cs new file mode 100644 index 000000000..02b0a60a2 --- /dev/null +++ b/src/Prowlarr.Benchmark.Test/Program.cs @@ -0,0 +1,15 @@ +using System; +using System.Security.Cryptography; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Running; + +namespace NzbDrone.Benchmark.Test +{ + public class Program + { + public static void Main(string[] args) + { + BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args); + } + } +} diff --git a/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj b/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj new file mode 100644 index 000000000..8935c3616 --- /dev/null +++ b/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj @@ -0,0 +1,16 @@ + + + + net6.0 + false + + + + + + + + + + + diff --git a/src/Prowlarr.sln b/src/Prowlarr.sln index dc8fce3a3..ff448c9d3 100644 --- a/src/Prowlarr.sln +++ b/src/Prowlarr.sln @@ -70,6 +70,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prowlarr.Api.V1", "Prowlarr EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prowlarr.Api.V1.Test", "Prowlarr.Api.V1.Test\Prowlarr.Api.V1.Test.csproj", "{4EB5FDB5-5908-4415-8DFD-E5740A480D92}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prowlarr.Benchmark.Test", "Prowlarr.Benchmark.Test\Prowlarr.Benchmark.Test.csproj", "{56B0D244-4791-40EE-8C01-08C34E3733B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Posix = Debug|Posix @@ -276,6 +278,14 @@ Global {4EB5FDB5-5908-4415-8DFD-E5740A480D92}.Release|Posix.Build.0 = Release|Any CPU {4EB5FDB5-5908-4415-8DFD-E5740A480D92}.Release|Windows.ActiveCfg = Release|Any CPU {4EB5FDB5-5908-4415-8DFD-E5740A480D92}.Release|Windows.Build.0 = Release|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Debug|Posix.ActiveCfg = Debug|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Debug|Posix.Build.0 = Debug|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Debug|Windows.ActiveCfg = Debug|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Debug|Windows.Build.0 = Debug|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Release|Posix.ActiveCfg = Release|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Release|Posix.Build.0 = Release|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Release|Windows.ActiveCfg = Release|Any CPU + {56B0D244-4791-40EE-8C01-08C34E3733B7}.Release|Windows.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -302,6 +312,7 @@ Global {7DA231E8-A31D-4F53-8760-820861B6CE65} = {F9E67978-5CD6-4A5F-827B-4249711C0B02} {0E2B067C-4A97-430C-8767-D19ACB09A63A} = {F9E67978-5CD6-4A5F-827B-4249711C0B02} {4EB5FDB5-5908-4415-8DFD-E5740A480D92} = {57A04B72-8088-4F75-A582-1158CF8291F7} + {56B0D244-4791-40EE-8C01-08C34E3733B7} = {57A04B72-8088-4F75-A582-1158CF8291F7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0D6944ED-0602-492F-9E11-0513294A4DA3}