This commit is contained in:
mlemanczyk committed 2023-06-10 13:26:01 +02:00
commit 9895347630
13 files changed
+95 -39

No files matched your search

@@ -17,7 +17,7 @@ namespace Recyclable.Collections.Benchmarks
public RecyclableCollectionsBenchmarks() : base()
{
TestObjectCount = 1;
BaselineBenchmarkType = RecyclableCollectionsBenchmarkSource.PooledList;
BaselineBenchmarkType = RecyclableCollectionsBenchmarkSource.List;
BenchmarkType = RecyclableCollectionsBenchmarkSource.RecyclableLongList;
}
@@ -52,7 +52,7 @@ namespace Recyclable.Collections.Benchmarks
[Params
(
RecyclableCollectionsBenchmarkSource.PooledList
RecyclableCollectionsBenchmarkSource.List
)]
public override RecyclableCollectionsBenchmarkSource BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; }
+48 -27
View File
@@ -25,35 +25,56 @@ public static class Program
//var benchmark = new RecyclableCollectionsBenchmarks();
//benchmark.Setup();
//foreach (var _ in Enumerable.Range(1, 1000))
//{
//benchmark.RecyclableLongList_Remove_FirstItems();
//benchmark.RecyclableLongList_RemoveAt_LastItems();
//benchmark.List_RemoveAt_LastItems();
//}
static void RunAssemblyBenchmarks()
{
_ = BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(new[] { "-f*" });
}
//benchmark.Cleanup();
}
static void RunRecyclableCollectionsBenchmarks()
{
_ = BenchmarkRunner.Run<RecyclableCollectionsBenchmarks>(BenchmarkConfig);
}
static void RunPocBenchmarks()
{
_ = BenchmarkRunner.Run<BoolOrComparePocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<DelegateVsComparerPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<ModuloPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RecyclableLongListPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<TaskRunVsTaskFactoryStartNewBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RefVsInstanceMemberPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<WhenParallelSearchBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RoundBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<SpanVsArrayBenchmarks>(BenchmarkConfig);
//ArraySizeLimitPocBenchmarks>(BenchmarkConfig);
}
static void RunSelectedBenchmarks()
{
// ****************
// *** Template ***
// ****************
var benchmark = new RecyclableCollectionsBenchmarks();
benchmark.Setup();
benchmark.RecyclableLongList_IndexOf_BestAndWorstCases();
benchmark.Cleanup();
static void Main(string[] args)
{
RunRecyclableCollectionsBenchmarks();
// RunPocBenchmarks();
// RunSelectedBenchmarks();
//RunAssemblyBenchmarks();
//foreach (var _ in Enumerable.Range(1, 1000))
//{
// benchmark.RecyclableLongList_Remove_FirstItems();
// benchmark.RecyclableLongList_RemoveAt_LastItems();
// benchmark.List_RemoveAt_LastItems();
//}
//benchmark.Cleanup();
}
static void RunPocBenchmarks()
{
_ = BenchmarkRunner.Run<BoolOrComparePocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<DelegateVsComparerPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<ModuloPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RecyclableLongListPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<TaskRunVsTaskFactoryStartNewBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RefVsInstanceMemberPocBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<WhenParallelSearchBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<RoundBenchmarks>(BenchmarkConfig);
_ = BenchmarkRunner.Run<SpanVsArrayBenchmarks>(BenchmarkConfig);
// ArraySizeLimitPocBenchmarks>(BenchmarkConfig);
}
static void Main(string[] args)
{
RunRecyclableCollectionsBenchmarks();
// RunPocBenchmarks();
// RunSelectedBenchmarks();
// RunAssemblyBenchmarks();
}
}
}
@@ -1,6 +1,6 @@
namespace Recyclable.Collections
{
public interface IRandomNumberGenerator
internal interface IRandomNumberGenerator
{
int NextInt32(int startIndex, int endIndex);
}
+1 -1
View File
@@ -1,6 +1,6 @@
namespace Recyclable.Collections
{
public interface IRecyclableOwner<T> : IList<T>
internal interface IRecyclableOwner<T> : IList<T>
{
T this[long index] { get; set; }
int BlockSize { get; }
+1 -1
View File
@@ -4,7 +4,7 @@ namespace Recyclable.Collections
{
// The source code was taken from https://codereview.stackexchange.com/questions/205407/quicksort-without-recursion.
// It was only beautified for .Net 6.0+.
public static class ListExtensions
internal static class ListExtensions
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool Contains<T>(this RecyclableList<T[]> arrays, T item) => arrays.Any(x => x.Contains(item));
+1 -1
View File
@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
namespace Recyclable.Collections
{
public static class MathUtils
internal static class MathUtils
{
// private static readonly long[] Pow2 = new long[]
// {
+1 -1
View File
@@ -1,6 +1,6 @@
namespace Recyclable.Collections
{
public class MemoryBucket<T>
internal class MemoryBucket<T>
{
public MemoryBucket(T[] memory, MemoryBucket<T> nextBucket)
{
@@ -7,7 +7,7 @@
<Nullable>enable</Nullable>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>Recyclable.Collections</PackageId>
<PackageVersion>0.0.3.1-alpha</PackageVersion>
<PackageVersion>0.0.3.2-alpha</PackageVersion>
<Authors>Marek Lemańczyk</Authors>
<Company>N/A</Company>
<Product>Recyclable.Collections</Product>
@@ -19,7 +19,7 @@
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
<RepositoryType>git</RepositoryType>
<PackageReleaseNotes>`RecyclableList&lt;T&gt;` and `RecyclableLongList&lt;T&gt;` implemented. NuGet packages updated.</PackageReleaseNotes>
<PackageReleaseNotes>Several classes made internal to avoid conflicts with other packages. Not ready classes made internal for now.</PackageReleaseNotes>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
namespace Recyclable.Collections
{
public static class RecyclableLongListExtensions
internal static class RecyclableLongListExtensions
{
private const int _minPooledArraySize = RecyclableDefaults.MinPooledArrayLength;
private const long ItemNotFoundIndexLong = -1L;
@@ -1,6 +1,6 @@
namespace Recyclable.Collections
{
public readonly struct SearchConfiguration<TList, TItem>
internal readonly struct SearchConfiguration<TList, TItem>
{
public TItem ItemToFind { get; init; }
public TList List { get; init; }
@@ -1,6 +1,6 @@
namespace Recyclable.Collections
{
public class SystemRandomNumberGenerator : IRandomNumberGenerator
internal class SystemRandomNumberGenerator : IRandomNumberGenerator
{
private readonly Random _random = new();
@@ -0,0 +1,19 @@
using Microsoft.CodeAnalysis;
using System;
namespace SourceCodeGenerator.Net
{
[Generator]
public class RecyclableCollectionsGenerator : ISourceGenerator
{
public void Execute(GeneratorExecutionContext context)
{
context.AddSource($".g.cs");
}
public void Initialize(GeneratorInitializationContext context)
{
// Nothing to initialize at this point yet
}
}
}
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<EnforceExtendedAnalyzerRules>True</EnforceExtendedAnalyzerRules>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" />
</ItemGroup>
</Project>