From 7cf22cafb7967aaa7f337b1c149ec02c2df20f92 Mon Sep 17 00:00:00 2001 From: Tynkute Date: Sun, 6 Dec 2020 13:01:13 +0300 Subject: [PATCH 1/6] Added comments --- .../Arrays/ArrayPool[T].cs | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index 57e2ca9b..c704c6a1 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -4,8 +4,6 @@ using Platform.Disposables; using Platform.Collections.Stacks; -#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - namespace Platform.Collections.Arrays { /// @@ -21,15 +19,43 @@ public class ArrayPool private readonly int _maxArraysPerSize; private readonly Dictionary> _pool = new Dictionary>(ArrayPool.DefaultSizesAmount); + /// + /// Initializes a new instance of the ArrayPool class. + /// Инициализирует новый экземпляр класса ArrayPool. + /// + /// The maximum size of the array in the pool.Максимальный размер массива в пуле. [MethodImpl(MethodImplOptions.AggressiveInlining)] public ArrayPool(int maxArraysPerSize) => _maxArraysPerSize = maxArraysPerSize; + /// + /// Initializes a new instance of the ArrayPool class with a default argument. + /// Инициализирует новый экземпляр класса ArrayPool с аргументом по умолчанию. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } + /// + /// Retrieves an array of the specified size from the array pool, which is automatically freed after calling the Disposable destructor. + /// Извлекает из пула массивов массив с указанным размером, который автоматически освободится, после вызова Disposable деструктора. + /// + /// The allocated array size.Размер выделяемого массива. + /// + /// An array of the specified size from the array pool, if it is not in the pool, a new one is created. + /// Массив указанного размера из пула массивов, если его нет в пуле, cоздаётся новый. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public Disposable AllocateDisposable(long size) => (Allocate(size), Free); + /// + /// Changes the number of elements in the array to the specified value. + /// Изменяет количество элементов массива до указанной величины. + /// + /// Source array.Исходный массив. + /// The size of the new array.Размер нового массива. + /// + /// Array with new number of elements. + /// Массив с новым количеством элементов. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public Disposable Resize(Disposable source, long size) { @@ -44,12 +70,31 @@ public Disposable Resize(Disposable source, long size) return destination; } + /// + /// Clears the pool. + /// Очищает пул. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual void Clear() => _pool.Clear(); + /// + /// Retrieves an array with the specified size from the array pool. + /// Извлекает из пула массивов массив с указанным размером. + /// + /// The array elements type.Тип элементов массива. + /// The allocated array size.Размер выделяемого массива. + /// + /// An array of the specified size from the array pool, if it is not in the pool, a new one is created. + /// Массив указанного размера из пула массивов, если его нет в пуле, cоздаётся новый. + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual T[] Allocate(long size) => size <= 0L ? Array.Empty() : _pool.GetOrDefault(size)?.PopOrDefault() ?? new T[size]; + /// + /// Freeing the array into the array pool if the array is not empty or the stack is not full. + /// Освобождение массива в пул массивов, если массив не пуст, или стек не полон. + /// + /// The array to be freed into the pull.Массив который нужно освобоить в пулл. [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual void Free(T[] array) { From ee48376671cc861cfe497176dbf59f195e790f3d Mon Sep 17 00:00:00 2001 From: Tynkute Date: Sun, 6 Dec 2020 19:10:50 +0300 Subject: [PATCH 2/6] Syntax errors fixed --- .../Arrays/ArrayPool[T].cs | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index c704c6a1..7d2e0072 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -6,6 +6,11 @@ namespace Platform.Collections.Arrays { + /// + /// A set of arrays ready for reuse. + /// Набор массивов готовых к повторному использованию. + /// + /// Array elements type.Тип элементов массива. /// /// Original idea from http://geekswithblogs.net/blackrob/archive/2014/12/18/array-pooling-in-csharp.aspx /// @@ -23,35 +28,35 @@ public class ArrayPool /// Initializes a new instance of the ArrayPool class. /// Инициализирует новый экземпляр класса ArrayPool. /// - /// The maximum size of the array in the pool.Максимальный размер массива в пуле. + /// The maximum number of arrays in the pool per size.Максимальное количество массивов в пуле на каждый размер. [MethodImpl(MethodImplOptions.AggressiveInlining)] public ArrayPool(int maxArraysPerSize) => _maxArraysPerSize = maxArraysPerSize; /// - /// Initializes a new instance of the ArrayPool class with a default argument. - /// Инициализирует новый экземпляр класса ArrayPool с аргументом по умолчанию. + /// Initializes a new instance of the ArrayPool class using the initial default value. + /// Инициализирует новый экземпляр класса ArrayPool, используя начальное значение по умолчанию. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// - /// Retrieves an array of the specified size from the array pool, which is automatically freed after calling the Disposable destructor. - /// Извлекает из пула массивов массив с указанным размером, который автоматически освободится, после вызова Disposable деструктора. + /// Retrieves an array from the pool, which will be automatically freed after calling the class destructor. + /// Извлекает из пула массив, который автоматически освободится, после вызова деструктора класса. /// /// The allocated array size.Размер выделяемого массива. /// - /// An array of the specified size from the array pool, if it is not in the pool, a new one is created. - /// Массив указанного размера из пула массивов, если его нет в пуле, cоздаётся новый. + /// An array from the pool, if it not, a new one is created. + /// Массив из пула, если его нет, cоздаётся новый. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public Disposable AllocateDisposable(long size) => (Allocate(size), Free); /// - /// Changes the number of elements in the array to the specified value. - /// Изменяет количество элементов массива до указанной величины. + /// Resizes the array. + /// Изменяет размер массива. /// /// Source array.Исходный массив. - /// The size of the new array.Размер нового массива. + /// New array size.Новый размер массива. /// /// Array with new number of elements. /// Массив с новым количеством элементов. @@ -78,23 +83,22 @@ public Disposable Resize(Disposable source, long size) public virtual void Clear() => _pool.Clear(); /// - /// Retrieves an array with the specified size from the array pool. - /// Извлекает из пула массивов массив с указанным размером. + /// Retrieves an array with the specified size from the pool. + /// Извлекает из пула массив с указанным размером. /// - /// The array elements type.Тип элементов массива. /// The allocated array size.Размер выделяемого массива. /// - /// An array of the specified size from the array pool, if it is not in the pool, a new one is created. - /// Массив указанного размера из пула массивов, если его нет в пуле, cоздаётся новый. + /// An array from the pool, if it not, a new one is created. + /// Массив из пула, если его нет, cоздаётся новый. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual T[] Allocate(long size) => size <= 0L ? Array.Empty() : _pool.GetOrDefault(size)?.PopOrDefault() ?? new T[size]; /// - /// Freeing the array into the array pool if the array is not empty or the stack is not full. - /// Освобождение массива в пул массивов, если массив не пуст, или стек не полон. + /// Freeing the array to the pool for later reuse. + /// Освобождение массива в пул для последующего повторного использования. /// - /// The array to be freed into the pull.Массив который нужно освобоить в пулл. + /// The array to be freed into the pool.Массив который нужно освободить в пул. [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual void Free(T[] array) { @@ -110,4 +114,4 @@ public virtual void Free(T[] array) stack.Push(array); } } -} +} \ No newline at end of file From f929827f9904c515c5066bafc27814cafa5edae4 Mon Sep 17 00:00:00 2001 From: Tynkute Date: Sat, 12 Dec 2020 21:47:48 +0300 Subject: [PATCH 3/6] fix syntax errors --- .../Arrays/ArrayPool[T].cs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index 7d2e0072..e7b2a856 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -7,10 +7,10 @@ namespace Platform.Collections.Arrays { /// - /// A set of arrays ready for reuse. - /// Набор массивов готовых к повторному использованию. + /// Represents a set of arrays ready for reuse. + /// Представляет собой набор массивов готовых к повторному использованию. /// - /// Array elements type.Тип элементов массива. + /// The array elements type.Тип элементов массива. /// /// Original idea from http://geekswithblogs.net/blackrob/archive/2014/12/18/array-pooling-in-csharp.aspx /// @@ -33,33 +33,33 @@ public class ArrayPool public ArrayPool(int maxArraysPerSize) => _maxArraysPerSize = maxArraysPerSize; /// - /// Initializes a new instance of the ArrayPool class using the initial default value. - /// Инициализирует новый экземпляр класса ArrayPool, используя начальное значение по умолчанию. + /// Initializes a new instance of the ArrayPool class using the maximum number of arrays per default size. + /// Инициализирует новый экземпляр класса ArrayPool, используя максимальное количество массивов на каждый размер по умолчанию. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// - /// Retrieves an array from the pool, which will be automatically freed after calling the class destructor. - /// Извлекает из пула массив, который автоматически освободится, после вызова деструктора класса. + /// Retrieves an array from the pool, which will automatically return to the pool when the container is released. + /// Извлекает из пула массив, который автоматически вернётся в пул при высвобождении контейнера. /// /// The allocated array size.Размер выделяемого массива. /// - /// An array from the pool, if it not, a new one is created. - /// Массив из пула, если его нет, cоздаётся новый. + /// The container to be freed containing either a new array or an array from the pool. + /// Высвобождаемый контейнер содержащий либо новый массив, либо массив из пула. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public Disposable AllocateDisposable(long size) => (Allocate(size), Free); /// - /// Resizes the array. - /// Изменяет размер массива. + /// Replaces the array with another array from the pool with the specified size. + /// Заменяет массив на другой массив из пула с указанным размером. /// - /// Source array.Исходный массив. - /// New array size.Новый размер массива. + /// The source array.Исходный массив. + /// A new array size.Новый размер массива. /// - /// Array with new number of elements. - /// Массив с новым количеством элементов. + /// Array with the new number of elements. + /// Массив с новым размером. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public Disposable Resize(Disposable source, long size) @@ -88,8 +88,8 @@ public Disposable Resize(Disposable source, long size) /// /// The allocated array size.Размер выделяемого массива. /// - /// An array from the pool, if it not, a new one is created. - /// Массив из пула, если его нет, cоздаётся новый. + /// Pooled array or new array. + /// Массив из пула или новый массив. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual T[] Allocate(long size) => size <= 0L ? Array.Empty() : _pool.GetOrDefault(size)?.PopOrDefault() ?? new T[size]; From 7d4fb74843fb5aa2388e283d37bc08d3befa039c Mon Sep 17 00:00:00 2001 From: Tynkute Date: Fri, 18 Dec 2020 17:53:34 +0300 Subject: [PATCH 4/6] Fix.... --- csharp/Platform.Collections/Arrays/ArrayPool[T].cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index e7b2a856..08c3c994 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -40,12 +40,12 @@ public class ArrayPool public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// - /// Retrieves an array from the pool, which will automatically return to the pool when the container is released. + /// Retrieves an array from the pool, which will automatically return to the pool when the container is disposed. /// Извлекает из пула массив, который автоматически вернётся в пул при высвобождении контейнера. /// /// The allocated array size.Размер выделяемого массива. /// - /// The container to be freed containing either a new array or an array from the pool. + /// The disposable container to be freed containing either a new array or an array from the pool. /// Высвобождаемый контейнер содержащий либо новый массив, либо массив из пула. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -58,7 +58,7 @@ public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// The source array.Исходный массив. /// A new array size.Новый размер массива. /// - /// Array with the new number of elements. + /// An array with the new number of elements. /// Массив с новым размером. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -88,15 +88,15 @@ public Disposable Resize(Disposable source, long size) /// /// The allocated array size.Размер выделяемого массива. /// - /// Pooled array or new array. + /// An array from the pool or new array. /// Массив из пула или новый массив. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public virtual T[] Allocate(long size) => size <= 0L ? Array.Empty() : _pool.GetOrDefault(size)?.PopOrDefault() ?? new T[size]; /// - /// Freeing the array to the pool for later reuse. - /// Освобождение массива в пул для последующего повторного использования. + /// Frees the array to the pool for later reuse. + /// Освобождает массив в пул для последующего повторного использования. /// /// The array to be freed into the pool.Массив который нужно освободить в пул. [MethodImpl(MethodImplOptions.AggressiveInlining)] From 4151aa9e16b1f9ca76535831028cecbfc1aad76e Mon Sep 17 00:00:00 2001 From: Tynkute Date: Fri, 18 Dec 2020 18:02:12 +0300 Subject: [PATCH 5/6] errors... --- csharp/Platform.Collections/Arrays/ArrayPool[T].cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index 08c3c994..dfee73cd 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -25,8 +25,8 @@ public class ArrayPool private readonly Dictionary> _pool = new Dictionary>(ArrayPool.DefaultSizesAmount); /// - /// Initializes a new instance of the ArrayPool class. - /// Инициализирует новый экземпляр класса ArrayPool. + /// Initializes a new instance of the ArrayPool class using the specified maximum number of arrays per size. + /// Инициализирует новый экземпляр класса ArrayPool, используя указанное максимальное количество массивов на каждый размер. /// /// The maximum number of arrays in the pool per size.Максимальное количество массивов в пуле на каждый размер. [MethodImpl(MethodImplOptions.AggressiveInlining)] From 61f8b70ef122f3162cc076f2f39329790ca055c9 Mon Sep 17 00:00:00 2001 From: Tynkute Date: Fri, 18 Dec 2020 18:20:48 +0300 Subject: [PATCH 6/6] my bad.. --- csharp/Platform.Collections/Arrays/ArrayPool[T].cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs index dfee73cd..5479cc85 100644 --- a/csharp/Platform.Collections/Arrays/ArrayPool[T].cs +++ b/csharp/Platform.Collections/Arrays/ArrayPool[T].cs @@ -33,7 +33,7 @@ public class ArrayPool public ArrayPool(int maxArraysPerSize) => _maxArraysPerSize = maxArraysPerSize; /// - /// Initializes a new instance of the ArrayPool class using the maximum number of arrays per default size. + /// Initializes a new instance of the ArrayPool class using the default maximum number of arrays per size. /// Инициализирует новый экземпляр класса ArrayPool, используя максимальное количество массивов на каждый размер по умолчанию. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -45,7 +45,7 @@ public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// /// The allocated array size.Размер выделяемого массива. /// - /// The disposable container to be freed containing either a new array or an array from the pool. + /// The disposable container containing either a new array or an array from the pool. /// Высвобождаемый контейнер содержащий либо новый массив, либо массив из пула. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -58,7 +58,7 @@ public ArrayPool() : this(ArrayPool.DefaultMaxArraysPerSize) { } /// The source array.Исходный массив. /// A new array size.Новый размер массива. /// - /// An array with the new number of elements. + /// An array with a new size. /// Массив с новым размером. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -88,7 +88,7 @@ public Disposable Resize(Disposable source, long size) /// /// The allocated array size.Размер выделяемого массива. /// - /// An array from the pool or new array. + /// An array from the pool or a new array. /// Массив из пула или новый массив. /// [MethodImpl(MethodImplOptions.AggressiveInlining)]