diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index e5f9f3baf..b72be9df6 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -68,7 +68,7 @@ jobs:
working-directory: src
- name: Create NuGet Artifacts
- uses: actions/upload-artifact@v4.6.2
+ uses: actions/upload-artifact@v7.0.1
with:
name: nuget
path: 'src/**/bin/Release/*.nupkg'
diff --git a/NonProduction/DynamicData.Profile/Allocations.cs b/NonProduction/DynamicData.Profile/Allocations.cs
deleted file mode 100644
index 0ebe7bf41..000000000
--- a/NonProduction/DynamicData.Profile/Allocations.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved.
-// Roland Pheasant licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for full license information.
-
-using System;
-
-namespace DynamicData.Profile
-{
- public static class Allocations
- {
- public static AllocationsCount Run(Action action)
- {
- var initial = GC.GetAllocatedBytesForCurrentThread();
- action();
- var final = GC.GetAllocatedBytesForCurrentThread();
-
- return new AllocationsCount(initial, final);
- }
- }
-}
\ No newline at end of file
diff --git a/NonProduction/DynamicData.Profile/AllocationsCount.cs b/NonProduction/DynamicData.Profile/AllocationsCount.cs
deleted file mode 100644
index 4e9f7a441..000000000
--- a/NonProduction/DynamicData.Profile/AllocationsCount.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved.
-// Roland Pheasant licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for full license information.
-
-namespace DynamicData.Profile
-{
- public class AllocationsCount
- {
-
- public long InitialSize { get; }
- public long FinalSize { get; }
- public long Size => FinalSize - InitialSize;
-
- /// Initializes a new instance of the class.
- public AllocationsCount(long initialSize, long finalSize)
- {
- InitialSize = initialSize;
- FinalSize = finalSize;
- }
-
- public override string ToString()
- {
- return $"Allocation Bytes: {Size:N0}";
- }
- }
-}
\ No newline at end of file
diff --git a/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs b/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs
deleted file mode 100644
index 96f5dc0c7..000000000
--- a/NonProduction/DynamicData.Profile/CacheAllocationChecks.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved.
-// Roland Pheasant licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for full license information.
-
-using System;
-using System.Linq;
-using Xunit;
-
-namespace DynamicData.Profile
-{
-
- public class CacheAllocationChecks
- {
- [Fact]
- public void PopulateCache_NoObservers()
- {
- var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList();
-
- var cache = new SourceCache(p=>p.Name);
-
- var result = Allocations.Run(() =>
- {
- cache.AddOrUpdate(items);
- });
- Console.WriteLine(result);
- }
-
- [Fact]
- public void PopulateCache_Observers()
- {
- var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList();
-
- var cache = new SourceCache(p => p.Name);
- var subscribed = cache.Connect().Subscribe();
- var result = Allocations.Run(() =>
- {
- cache.AddOrUpdate(items);
- });
- Console.WriteLine(result);
- }
-
- [Fact]
- public void Connect()
- {
- var items = Enumerable.Range(1, 10_000).Select(j => new Person("P" + j, j)).ToList();
-
- var cache = new SourceCache(p => p.Name);
- cache.Connect().Subscribe();//do warm up
-
- var added = Allocations.Run(() => cache.AddOrUpdate(items));
- Console.WriteLine(added);
-
- var connected = Allocations.Run(() => cache.Connect().Subscribe());
- Console.WriteLine(connected);
-
- var filtered = Allocations.Run(() => cache.Connect(p=>p.Age <5000).Subscribe());
- Console.WriteLine(filtered);
- }
- }
-}
diff --git a/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs b/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs
deleted file mode 100644
index d2939e177..000000000
--- a/NonProduction/DynamicData.Profile/CheapAndDirtyAllocationTest.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved.
-// Roland Pheasant licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for full license information.
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Immutable;
-using System.Linq;
-using DynamicData.Kernel;
-using Xunit;
-
-namespace DynamicData.Profile
-{
- public class CheapAndDirtyAllocationTest
- {
-
- [Fact]
- public void ChangeSetAllocations()
- {
- // Arrange
- var iList = Enumerable.Range(1, 100)
- .Select(j => new Person("P" + j, j))
- .Select(p => new Change(ChangeReason.Add, p.Name, p))
- .ToList();
-
- var changes = new ChangeSet(iList);
-
- var startAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- // Assert
- var i = 0;
- foreach (var item in changes)
- {
- i++;
- }
-
- var endAllocs = GC.GetAllocatedBytesForCurrentThread();
- var diff = endAllocs - startAllocs;
- Assert.Equal(startAllocs, endAllocs);
- Assert.Equal(iList.Count, i);
- }
-
- [Fact(Skip = "Allocation is not as originally expected, this test has not been run for some time due to a solution fault in loading the test")]
- public void ChangeSetAllocations2()
- {
- // Arrange
- var iList = Enumerable.Range(1, 100)
- .Select(j => new Person("P" + j, j))
- .Select(p => new Change(ChangeReason.Add, p.Name, p))
- .ToList();
-
- var changes = new ChangeSet(iList);
-
- var startAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- // Act
- EnumerableIList> eIList = changes;
-
- // Assert
- var i = 0;
- var count = changes.Count;
- foreach (var item in eIList)
- {
- i++;
- }
-
- var endAllocs = GC.GetAllocatedBytesForCurrentThread();
- var diff = endAllocs - startAllocs;
- Assert.Equal(startAllocs, endAllocs);
- Assert.Equal(iList.Count, i);
- }
-
- [Fact]
- public void NoAllocations()
- {
- // Arrange
- IList iList = new[] { 1, 2, 3, 4, 5, 6, 7 }.ToImmutableArray();
-
- // Act
- var eIList = EnumerableIList.Create(iList);
- var startAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- // Assert
- var i = 0;
- foreach (var item in eIList)
- {
- i++;
- }
-
- var endAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- Assert.Equal(startAllocs, endAllocs);
- Assert.Equal(iList.Count, i);
- }
-
- [Fact]
- public void WithAllocations()
- {
- // Arrange
- IList iList = new[] { 1, 2, 3, 4, 5, 6, 7 }.ToImmutableArray();
-
- // Act
- var eIList = EnumerableIList.Create(iList);
- var startAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- // Assert
- var i = 0;
- foreach (var item in eIList)
- {
- i++;
- }
-
- var endAllocs = GC.GetAllocatedBytesForCurrentThread();
-
- Assert.Equal(startAllocs, endAllocs);
- Assert.Equal(iList.Count, i);
- }
- }
-}
diff --git a/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj b/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj
deleted file mode 100644
index 504b3165c..000000000
--- a/NonProduction/DynamicData.Profile/DynamicData.Profile.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
- net8.0
- $(NoWarn);CS0618
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/NonProduction/DynamicData.Profile/Person.cs b/NonProduction/DynamicData.Profile/Person.cs
deleted file mode 100644
index 2e8ccc0b9..000000000
--- a/NonProduction/DynamicData.Profile/Person.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011-2019 Roland Pheasant. All rights reserved.
-// Roland Pheasant licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for full license information.
-
-namespace DynamicData.Profile
-{
- public class Person
- {
- public string Name { get; }
- public int Age { get; }
-
- public Person(string name, int age)
- {
- Name = name;
- Age = age;
- }
- }
-}
\ No newline at end of file