diff --git a/src/Umbraco.Tests.Benchmarks/LinqCastBenchmarks.cs b/src/Umbraco.Tests.Benchmarks/LinqCastBenchmarks.cs new file mode 100644 index 0000000000..4118620515 --- /dev/null +++ b/src/Umbraco.Tests.Benchmarks/LinqCastBenchmarks.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using System.Linq; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Diagnostics.Windows; + +namespace Umbraco.Tests.Benchmarks +{ + /// + /// Want to check what is faster OfType or Cast when a enurable all has the same items + /// + [Config(typeof(Config))] + public class LinqCastBenchmarks + { + private class Config : ManualConfig + { + public Config() + { + Add(new MemoryDiagnoser()); + } + } + + public LinqCastBenchmarks() + { + _array = new List(); + _array.AddRange(Enumerable.Range(0, 10000).Select(x => x.ToString())); + } + + private readonly List _array; + + [Benchmark(Baseline = true)] + public void OfType() + { + foreach (var i in _array.OfType()) + { + var a = i; + } + } + + [Benchmark()] + public void Cast() + { + foreach (var i in _array.Cast()) + { + var a = i; + } + } + + [Benchmark()] + public void ExplicitCast() + { + foreach (var i in _array) + { + var a = (string)i; + } + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests.Benchmarks/Program.cs b/src/Umbraco.Tests.Benchmarks/Program.cs index 52736ed6a4..eb49f153cc 100644 --- a/src/Umbraco.Tests.Benchmarks/Program.cs +++ b/src/Umbraco.Tests.Benchmarks/Program.cs @@ -8,23 +8,14 @@ namespace Umbraco.Tests.Benchmarks { public static void Main(string[] args) { - if (args.Length == 1) + var switcher = new BenchmarkSwitcher(new[] { - var type = Assembly.GetExecutingAssembly().GetType("Umbraco.Tests.Benchmarks." +args[0]); - if (type == null) - { - Console.WriteLine("Unknown benchmark."); - } - else - { - var summary = BenchmarkRunner.Run(type); - Console.ReadLine(); - } - } - else - { - Console.WriteLine("?"); - } + typeof(BulkInsertBenchmarks), + typeof(ModelToSqlExpressionHelperBenchmarks), + typeof(XmlBenchmarks), + typeof(LinqCastBenchmarks) + }); + switcher.Run(args); } } } diff --git a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj index 9f6d4e799f..39d77bbc26 100644 --- a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj +++ b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj @@ -85,6 +85,7 @@ +