Commit Graph
100 Commits
Author SHA1 Message Date
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
Marek Lemańczyk 9c640f4251 RecyclableList.AddRange(List<T> items) performance improvements. 2023-03-10 18:30:41 +01:00
Marek Lemańczyk 948bbaff5c New benchmarks added 2023-03-10 17:10:19 +01:00
Marek Lemańczyk 41ad48d4e6 New benchmarks addedo 2023-03-10 17:09:53 +01:00
Marek Lemańczyk 3ce3becfbd RecyclableList performance improvements & fixes. New tests added. 2023-03-10 16:52:36 +01:00
Marek Lemańczyk 02138dfac6 New tests added for IndexOf & LongIndexOf 2023-03-05 19:19:54 +01:00
Marek Lemańczyk 0cd68fbb7c New benchmark cases added 2023-03-05 19:02:37 +01:00
Marek Lemańczyk a15f2431fc Tabs fixed. New benchmark params added 2023-03-05 19:01:53 +01:00
Marek Lemańczyk 73e07c917d RecyclableList_LongIndexOf_FirstItems & RecyclableList_LongIndexOf_LastItems benchmarks added 2023-03-05 18:55:23 +01:00
Marek Lemańczyk ba17f6972f RecyclableList_IndexOf_FirstItems, RecyclableList_IndexOf_LastItems, List_IndexOf_FirstItems & List_IndexOf_LastItems benchmarks fixed to always search for some items, if the no. of test cases is low. 2023-03-05 18:54:33 +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 3552dd00d1 Test object count increased to 100_000 to better cover cases. 2023-03-01 23:09:48 +01:00