mlemanczyk
8c0d3c5fbc
Responsibility for rounding RecyclableList.minBlockSize up to the closest & highest power of 2 moved to .SetNewLength.
2023-03-27 01:53:09 +02:00
mlemanczyk
b33904a17f
RecyclableList.BlockSize enforced to be the power of 2
2023-03-27 01:10:54 +02:00
mlemanczyk
ef285bdc67
Historical versions removed.
2023-03-26 23:37:26 +02:00
mlemanczyk
9aac3e0224
RecyclableList[int] & RecyclableList[long] performance improvements. We'll now require the block size to be the power of 2. Includes historical versions.
2023-03-26 23:35:08 +02:00
mlemanczyk
c7052e778f
RecyclableList.SetNewLength fixed to properly initialize the list if the no. of memory blocks from array pool exceeds requested no.
2023-03-26 23:22:32 +02:00
mlemanczyk
f231f7e0aa
RecyclableList.LastBlockIndex renamed to RecyclableList.NextItemBlockIndex.
2023-03-26 23:16:34 +02:00
mlemanczyk
ea52b32859
Fixed memory leak in RecyclableList.AddRangeEnumerated
2023-03-24 19:03:46 +01:00
mlemanczyk
0f7237e3f0
Added rented array clearing if T is a reference type, as discussed in https://github.com/dotnet/runtime/issues/25378 .
2023-03-22 00:04:25 +01:00
mlemanczyk
b91c4476eb
RecyclableList.BlockCount renamed => RecyclableList.ReservedBlockCount. Fixed to always include the last block.
...
RecyclableList.LastTakenBlockIndex property added for some scenarios.
RecyclableList.IndexOf & .LongIndexOf fixed to use the correct index.
RecyclableArrayList.AddRange(RecyclableList<T> items) fixed to use the correct index.
Some test cases excluded, where needed.
2023-03-20 23:46:50 +01:00
mlemanczyk
b1e6c587c3
RecyclableList modified to respect the removal of blocks.
...
RecyclableList.IndexOf fixed to work in various combinations.
RecyclableList tests extended.
2023-03-20 21:48:09 +01:00
Marek Lemańczyk
e6224ebe44
Fixed handling of empty lists in RecyclableArrayList.
...
Some RecyclableList properties made public to allow use in RecyclableArrayList.
Added support for RecyclableList in RecyclableArrayList.AddRange.
Additional tests added for RecyclableArrayList.
2023-03-19 20:37:18 +01:00
Marek Lemańczyk
cf284865e9
RecyclableList finalizer added to make sure that the recyclable arrays are correctly returned.
2023-03-16 02:24:18 +01:00
Marek Lemańczyk
c2eefdfe3b
RecyclableCollections.Contains(T item) fixes to exceptions found by tests.
2023-03-16 02:21:14 +01:00
Marek Lemańczyk
ca6ee45bb6
RecyclableCollections.AddRange(List<T> items) fixes to exceptions found by tests.
2023-03-16 02:20:16 +01:00
Marek Lemańczyk
bf392d60ed
Tiny cleanup - "in" removed, where doesn't add value.
2023-03-12 16:41:28 +01:00
Marek Lemańczyk
addef85027
RecyclableList.AddRange(IEnumerable<T> source) performance improvements.
2023-03-12 15:41:29 +01:00
Marek Lemańczyk
5572c7c57c
Tiny cleanup. AddRange will now favor RecyclableList & RecyclableArrayList parameters.
2023-03-12 03:45:41 +01:00
Marek Lemańczyk
c211fb6ee4
RecyclableList.AddRange(IEnumerable<T> source) performance improvements. Small source code cleanup.
2023-03-12 03:44:07 +01:00
Marek Lemańczyk
efb393e13f
Recyclable.AddRange fixed to ignore empty sources
2023-03-12 03:23:13 +01:00
Marek Lemańczyk
91fae49bdb
RecyclableList.AddRange(IEnumerable<T> source) fixed to properly add items when we can get non-enumerated count.
2023-03-11 23:15:04 +01:00
Marek Lemańczyk
9b9b683462
RecyclableList.AddRange(RecyclableList<T> items) fixed to copy items only within block size & skip the rest.
2023-03-11 22:09:36 +01:00
Marek Lemańczyk
e968b47863
RecyclableList.AddRange(RecyclableList<T> items) code standardized.
2023-03-11 20:02:02 +01:00
Marek Lemańczyk
fb3290f853
RecyclableList.AddRange(IList<T> items) performance improvements
2023-03-11 19:51:51 +01:00
Marek Lemańczyk
44c8286f85
RecyclableList.RecyclableList.AddRange(RecyclableArrayList<T> items) fixed to break the loop when we reach the last block.
2023-03-11 19:38:50 +01:00
Marek Lemańczyk
a7d6a9b7e5
RecyclableList.AddRange(T[] items) fixed to break the loop when we reach the last block.
2023-03-11 19:33:40 +01:00
Marek Lemańczyk
689061f512
Cleanup - Version 2 removed
2023-03-11 17:14:10 +01:00
Marek Lemańczyk
a1187a06a4
RecyclableList.AddRange(List<T> items) performance improvements
2023-03-11 17:12:31 +01:00
Marek Lemańczyk
8dfdc6f088
Removed unnecessary Span<T> creation in RecyclableList.AddRange(T[] items) & .AddRange(RecyclableArrayList<T> items)
2023-03-11 16:43:14 +01:00
Marek Lemańczyk
1d61684300
RecyclableList.AddRange(RecyclableArrayList<T> items) performance improvements & simplification.
2023-03-11 16:00:59 +01:00
Marek Lemańczyk
e7e670ae35
RecyclableList.AddRange(T[] items) performance improvements.
2023-03-11 15:51:52 +01:00
Marek Lemańczyk
9c640f4251
RecyclableList.AddRange(List<T> items) performance improvements.
2023-03-10 18:30:41 +01:00
Marek Lemańczyk
3ce3becfbd
RecyclableList performance improvements & fixes. New tests added.
2023-03-10 16:52:36 +01:00
Marek Lemańczyk
2558f57934
RecyclableList.Remove modified to allow removing the last item.
2023-03-05 18:51:06 +01:00
Marek Lemańczyk
ec355160f9
IndexOf & LongIndexOf made alike. Small refactoring.
2023-03-05 18:50:09 +01:00
Marek Lemańczyk
a50ef10989
RecyclableList.IndexOf performance improvements.
2023-03-05 14:33:43 +01:00
Marek Lemańczyk
9676ee7485
Performance improvement for low no. of items
2023-03-03 01:33:41 +01:00
Marek Lemańczyk
be9dfaf43a
Code cleanup. Unnecessary versions removed.
2023-03-03 01:31:14 +01:00
Marek Lemańczyk
573e387a75
RecyclableList.Contains performance improvement +1%. Other versions kept for reference, if needed. Pending cleanup.
2023-03-01 00:25:06 +01:00
Marek Lemańczyk
5d9526a9f9
Fixed _lastBlockIndex assignment.
2023-03-01 00:22:27 +01:00
Marek Lemańczyk
59defd435c
Benchmarks improved. Contains & IndexOf separated into 2 groups: first 1 000 items & last 1 000 items.
2023-02-05 22:58:48 +01:00
Marek Lemańczyk
743e88f0e6
RecyclableList.Contains & .IndexOf fixed. Tests modified to validate operations on multiple blocks.
2023-02-05 19:49:28 +01:00
Marek Lemańczyk
f00849614f
RecyclableList.IndexOf reworked for performance improvement.
2023-02-05 18:59:34 +01:00
Marek Lemańczyk
10ae744875
RecyclableList.Contains reworked for performance improvements. 69% vs List.Contains
2023-02-05 17:58:29 +01:00
mlemanczyk
91abf1a614
RecyclableList.Contains reworked - first version
2023-02-01 23:29:23 +01:00
mlemanczyk
f3381942bc
Tiny code standardization
2023-01-31 20:24:30 +01:00
mlemanczyk
2dc6d74b0b
Fix to use the new _blockSize when we add capacity
2023-01-31 20:23:28 +01:00
mlemanczyk
55dc1459c7
Incorrect indexes fixed.
2023-01-31 20:22:04 +01:00
mlemanczyk
30c9a6cedc
RecyclableListExtensions.CopyTo fixed
2023-01-31 02:21:42 +01:00
mlemanczyk
c923383a71
Tiny code readability improvement
2023-01-29 21:39:16 +01:00
mlemanczyk
85fcf69c75
Local int vars converted to stackalloc'ed array for performance measures. Recyclable.Add benchmarks yield 0.42 - 0.45 vs List.Add
2023-01-29 21:34:14 +01:00