Skip to content

Commit 0c2b777

Browse files
authored
refactor: reduce memory footprint of statistics functionality (#602)
Currently all calls during the initialization result in an initialized `ConcurrentDictionary` for each path. This PR changes the behaviour, that the entries of `PathStatistics` are only added, during a normal statistic registration.
1 parent fc4df09 commit 0c2b777

17 files changed

+1447
-945
lines changed

Source/Testably.Abstractions.Testing/FileSystem/DirectoryInfoFactoryMock.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Diagnostics.CodeAnalysis;
33
using System.IO;
44
using Testably.Abstractions.Testing.Helpers;
5-
using Testably.Abstractions.Testing.Statistics;
65

76
namespace Testably.Abstractions.Testing.FileSystem;
87

@@ -24,8 +23,9 @@ public IFileSystem FileSystem
2423
/// <inheritdoc cref="IDirectoryInfoFactory.New(string)" />
2524
public IDirectoryInfo New(string path)
2625
{
27-
using IDisposable registration = RegisterMethod(nameof(New),
28-
path);
26+
using IDisposable registration = _fileSystem.StatisticsRegistration
27+
.DirectoryInfo.RegisterMethod(nameof(New),
28+
path);
2929

3030
return DirectoryInfoMock.New(
3131
_fileSystem.Storage.GetLocation(path
@@ -37,8 +37,9 @@ public IDirectoryInfo New(string path)
3737
[return: NotNullIfNotNull("directoryInfo")]
3838
public IDirectoryInfo? Wrap(DirectoryInfo? directoryInfo)
3939
{
40-
using IDisposable registration = RegisterMethod(nameof(Wrap),
41-
directoryInfo);
40+
using IDisposable registration = _fileSystem.StatisticsRegistration
41+
.DirectoryInfo.RegisterMethod(nameof(Wrap),
42+
directoryInfo);
4243

4344
if (_fileSystem.SimulationMode != SimulationMode.Native)
4445
{
@@ -54,8 +55,4 @@ public IDirectoryInfo New(string path)
5455
}
5556

5657
#endregion
57-
58-
private IDisposable RegisterMethod<T1>(string name, T1 parameter1)
59-
=> _fileSystem.StatisticsRegistration.DirectoryInfo.RegisterMethod(name,
60-
ParameterDescription.FromParameter(parameter1));
6158
}

0 commit comments

Comments
 (0)