mlemanczyk
0449700244
RecyclableList.EnsureCapacity performance improvement.
2023-04-11 21:24:28 +02:00
mlemanczyk
9cb9aa8bf0
ArraySizeLimitPocBenchmarks reworked.
2023-04-11 20:38:25 +02:00
mlemanczyk
098d862a3c
x64 platform added.
2023-04-11 20:33:59 +02:00
mlemanczyk
595566d0b9
The current maximum pooled block size, from testing, added.
2023-04-11 20:31:34 +02:00
mlemanczyk
7c7740b27c
RecyclableList performance improvements to pre-calculate the value of _blockSize - 1 & store it under _blockSizeMinus1
2023-04-11 20:30:34 +02:00
mlemanczyk
abbd568c6b
RecyclableList.LastTakenBlockIndex renamed to LastBlockWithData. Tiny cleanup.
2023-04-11 20:24:26 +02:00
mlemanczyk
2d7e62df72
Benchmarks mostly reorganized & cleaned up. Simplified for re-runs.
2023-04-11 16:42:06 +02:00
mlemanczyk
eae5cb4452
Changed all benchmarks to be non-baseline by default. Missing parameters added everywhere.
2023-04-11 00:46:22 +02:00
mlemanczyk
24a14f810b
Additional benchmarks added. One-off quick smoke test added.
2023-04-11 00:16:05 +02:00
mlemanczyk
91515cb76b
Typo fixed. Basic RecyclableList.Resize documentation added.
2023-04-11 00:13:59 +02:00
mlemanczyk
0063f11ff5
Clear mode set to ClearMode.Always in PooledList benchmarks to have fair comparison on worst case.
2023-04-11 00:12:53 +02:00
mlemanczyk
767892a9eb
Array_IndexOf_FirstItems benchmark added.
2023-04-10 23:07:51 +02:00
mlemanczyk
6b2db42d0d
Partial support for items counts exceeding int.MaxValue
2023-04-10 22:56:02 +02:00
mlemanczyk
fdea416dc1
RecyclableList[index] tests added for get.
2023-04-10 22:37:15 +02:00
mlemanczyk
4165c9c6d9
RecyclableList.EnsureCapacity & .Resize performance improvements. Custom ArrayPool<T> added.
2023-04-10 22:35:00 +02:00
mlemanczyk
7f84cdc636
RecyclableList.Resize performance improvements.
2023-04-09 03:10:46 +02:00
mlemanczyk
a132fdc775
RecyclableList.EnsureCapacity performance improvements.
2023-04-09 01:54:52 +02:00
mlemanczyk
ed76bd99ba
Failing tests fixed.
2023-04-09 01:51:58 +02:00
mlemanczyk
298af4e718
Arithmetic overflow protections added.
2023-04-09 00:50:12 +02:00
mlemanczyk
b7af797dd7
Tiny cleanup
2023-04-08 01:15:27 +02:00
mlemanczyk
dead323502
RecyclableArrayList.Remove & .RemoveAt performance improvements.
2023-04-08 01:13:37 +02:00
mlemanczyk
fd9c2dab82
RecyclableList.Remove & .RemoveAt performance improvements.
2023-04-08 01:02:11 +02:00
mlemanczyk
3369bcc6cb
RecyclableList.Remove & .RemoveAt performance improvements.
2023-04-08 00:34:23 +02:00
mlemanczyk
064b3f0cb0
.Remove & .RemoveAt benchmarks added.
2023-04-07 23:34:43 +02:00
mlemanczyk
1ce91c0062
RecyclableArrayList.Remove, RecyclableArrayList.RemoveAt, RecyclableList.Remove & RecyclableList.RemoveAt performance improvements.
...
Support for removal of any item implemented in RecyclableList.Remove & .RemoveAt.
2023-04-07 01:09:25 +02:00
mlemanczyk
d6b351b1eb
RecyclableList.DoIndexOf multiplication changed to bit shifting for better performance.
2023-04-01 20:01:34 +02:00
mlemanczyk
80756aff44
RecyclableList.RemoveAt fix to release the rented block correctly.
2023-04-01 20:00:32 +02:00
mlemanczyk
239d45fc8c
RecyclableArrayList.IndexOf improved to not raise exception when the list is empty.
2023-04-01 16:38:53 +02:00
mlemanczyk
4500484831
RecyclableArrayList.IndexOf performance improvements.
2023-04-01 13:54:53 +02:00
mlemanczyk
d79dc4fb86
Tiny cleanup
2023-03-30 20:29:36 +02:00
mlemanczyk
83f5b2ddc1
All benchmarks enabled by default
2023-03-30 19:45:49 +02:00
mlemanczyk
a2694a0b87
Benchmark results added.
2023-03-30 19:39:34 +02:00
mlemanczyk
07f1ee6880
Benchmarks for Collections.Pooled added
2023-03-30 19:36:03 +02:00
mlemanczyk
d1e0482693
RecyclableList.SetNewLength renamed to RecyclableList.Resize & performance improved.
2023-03-30 19:33:55 +02:00
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
1f86ef2c59
MathUtils.IsPow2 & MathUtils.GetPow2Shift performance improvements.
2023-03-27 01:12:39 +02:00
mlemanczyk
b33904a17f
RecyclableList.BlockSize enforced to be the power of 2
2023-03-27 01:10:54 +02:00
mlemanczyk
3f986c75a2
Additional benchmarks added to compare iterations over RecyclableList.
2023-03-27 00:00:42 +02:00
mlemanczyk
0cc9f6b84a
Modulo benchmarks added.
2023-03-26 23:57:23 +02:00
mlemanczyk
bd04f10931
Tiny cleanup
2023-03-26 23:40:13 +02:00
mlemanczyk
858964edbc
MathUtils added
2023-03-26 23:38:21 +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
17787b2cb1
Benchmark results moved to Recyclable.Collections.Benchmarks to keep the package clean.
2023-03-24 21:02:45 +01:00
mlemanczyk
b815767d8f
RecyclableArrayList & RecyclableList tests synced.
2023-03-24 20:53:54 +01:00
mlemanczyk
76598dcc7d
Cleanup
2023-03-24 20:14:29 +01:00
mlemanczyk
00b059006d
Compilation error fix.
2023-03-24 20:13:40 +01:00
mlemanczyk
98026f0103
No. of test cases reduced due to high execution times.
2023-03-24 20:10:49 +01:00
mlemanczyk
a5a4129f1c
Resolved problem with running tests all together.
2023-03-24 20:04:16 +01:00
mlemanczyk
e4e63715c2
Added missing "using"
2023-03-24 19:06:01 +01:00
mlemanczyk
31e3099bf4
Removed unnecessary arguments. We'll try to get enumerated count later in AddRange anyway.
2023-03-24 19:04:34 +01:00
mlemanczyk
ea52b32859
Fixed memory leak in RecyclableList.AddRangeEnumerated
2023-03-24 19:03:46 +01:00
mlemanczyk
6fc2a10e28
RecyclableArrayList fixes to always stay within the no. of items on the list, not the size of memory block.
2023-03-24 19:02:45 +01:00
mlemanczyk
97d5d9c6a3
RecyclableArrayList.Contains fixed to respect empty list.
2023-03-22 01:22:01 +01:00
mlemanczyk
5a39dc87f0
Tests ordered alphabetically.
2023-03-22 00:25:16 +01:00
mlemanczyk
c84cf263ca
Missing using added to limit pressure on garbage collector.
...
RecyclableArrayList.Remove tests extended to cover more cases.
Tiny cleanup.
2023-03-22 00:07:24 +01:00
mlemanczyk
62b2a2d105
Merge branch 'recyclable-block-list-added' of https://github.com/mlemanczyk/Recyclable.Collections into recyclable-block-list-added
2023-03-22 00:04:28 +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
4a1f2c1ffb
Added rented array clearing if T is a reference type, as discussed in https://github.com/dotnet/runtime/issues/25378 .
2023-03-22 00:00:41 +01:00
mlemanczyk
d4af246a3a
Added missing Array.IndexOf parameter
2023-03-21 23:14:34 +01:00
mlemanczyk
cda1c2b77d
Merge branch 'recyclable-block-list-added' of https://github.com/mlemanczyk/Recyclable.Collections into recyclable-block-list-added
2023-03-20 23:51:30 +01:00
mlemanczyk
277e52f701
RecyclableArrayList.Contains fixed to not throw exception when the list is empty.
...
RecyclableArrayList tests sorted alphabetically, simplified & extended to use the test data & validate various combinations of item counts & block sizes.
2023-03-20 23:51:23 +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
0a402e2d13
Merge branch 'recyclable-block-list-added' of https://github.com/mlemanczyk/Recyclable.Collections into recyclable-block-list-added
2023-03-20 21:49:49 +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
mlemanczyk
b21b80e222
RecyclableList modified to respect the removal of blocks.
...
RecyclableList.IndexOf fixed to work in various combinations.
RecyclableList tests extended.
2023-03-20 20:29:50 +01:00
mlemanczyk
070549de9e
Merge branch 'recyclable-block-list-added' of https://github.com/mlemanczyk/Recyclable.Collections into recyclable-block-list-added
2023-03-20 19:40:11 +01:00
mlemanczyk
1157e3e23d
Test cases adjusted to limit execution time.
2023-03-20 19:32:08 +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
e312accfe5
Unused & confusing test data removed.
2023-03-17 02:09:16 +01:00
Marek Lemańczyk
3e8f03e59f
RecyclableList tests extended & parameterized for various combinations of block sizes in source & target lists, including different no. of items.
2023-03-17 01:42:30 +01:00
Marek Lemańczyk
5235ea12bc
RecyclableListExtensions.CopyTo fixed to not raise exceptions in some configurations.
2023-03-17 01:40:56 +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
bdf69f300d
Added test cases for various block sizes & items counts.
2023-03-12 18:01:30 +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
025cdb3073
Tiny cleanup
2023-03-11 23:19:59 +01:00
Marek Lemańczyk
25a85ec763
New tests added. AddRangeShouldAddItemsInCorrectOrder & AddRangeShouldNotOverrideItems converted to theories with [MemberData]
2023-03-11 23:16:15 +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
1ea0af8d34
RecyclableListExtensions.CopyTo fixed to copy items from the last block in the range
2023-03-11 22:12:50 +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
625b44d341
xxx_AddRangeWhenSourceIsIList benchmarks will now use TestObjectsAsRecyclableList, to avoid any hidden List optimizations
2023-03-11 20:04:36 +01:00
Marek Lemańczyk
f08633da61
New unit tests added.
2023-03-11 20:02:58 +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
f76276c7a4
RecyclableArrayList.CopyTo fixed to copy only the no. of items added to the list.
2023-03-11 15:26:39 +01:00