Commit Graph

1966 Commits

Author SHA1 Message Date
Ion Gaztañaga 63f55fb085 Add predicate calling limit tests to all algorithms 2026-07-31 13:46:57 +02:00
Ion Gaztañaga dab2af604b Delete partition_point as it does not fill std requirements 2026-07-31 13:31:54 +02:00
Ion Gaztañaga 2d8d74e714 Use BOOST_[UN]LIKELY instead of own macro 2026-07-31 12:16:18 +02:00
Ion Gaztañaga 6a1a7d66cf Fix standard mandatory predicate calls on segmented outputs. These algorithms were calling the predicate more imtes. 2026-07-31 12:01:33 +02:00
Ion Gaztañaga 876a616430 Print type name when printing group geomean 2026-07-30 13:55:04 +02:00
Ion Gaztañaga ba73f84f8b Optimize size of the segment walker, merging the initial and final segment. The whole segment loop call remains since it can be better optimized/vectorized for fixed-size segment iterators. 2026-07-30 13:47:49 +02:00
Ion Gaztañaga 3e065656a8 Erase non-required typename. 2026-07-30 08:58:43 +02:00
Ion Gaztañaga 2c4d8043ae Add recursive output handling and improved leave condition return. 2026-07-30 01:43:48 +02:00
Ion Gaztañaga 3c8ea73b3c Implement variable size MyFatInt 2026-07-30 01:31:36 +02:00
Ion Gaztañaga b506adfa88 Simplify walking 2026-07-28 14:35:18 +02:00
Ion Gaztañaga bec5099d56 Scope segduo return type, in some compilers, this saves a bit of stack. 2026-07-28 13:07:39 +02:00
Ion Gaztañaga 77905ab479 Simplify partition_disjoint_bidir_ranges 2026-07-28 13:05:02 +02:00
Ion Gaztañaga d2f0d5b354 Disable bogus Wstringop-overflow also for GCC 10 2026-07-28 09:57:49 +02:00
Ion Gaztañaga 6d49914a4f Simplified segmented_partition first segment walk, reduging code size 2026-07-28 00:23:28 +02:00
Ion Gaztañaga f6175cb8cb Simplified segmented_partition loops to improve a bit GCC codegen and erased an unneeded middle function for the bidiretional case. 2026-07-27 18:54:27 +02:00
Ion Gaztañaga 4ef07df727 Use BOOST_CONTAINER_SEGMENTED_UNROLL instead of the plain one 2026-07-27 14:38:36 +02:00
Ion Gaztañaga 5b71062724 Add BOOST_UNLIKELY to empty range shortcuts 2026-07-27 00:39:42 +02:00
Ion Gaztañaga 41aeeba723 Update hot loop comments 2026-07-27 00:07:04 +02:00
Ion Gaztañaga 282bec8c93 Update temporary tuple-like results handling in order to reduce code size 2026-07-27 00:06:42 +02:00
Ion Gaztañaga 6c0f013874 SImplify segment walk 2026-07-26 20:37:52 +02:00
Ion Gaztañaga aa2b15274e Improved all tests to test same segment cases, including ourter and inner segmentation loops 2026-07-26 14:24:01 +02:00
Ion Gaztañaga fa0859568b Apply segmented logic simplification to improve code size 2026-07-26 14:22:52 +02:00
Ion Gaztañaga c857e95625 Fix destination exhaustion logic as the source must be always consumed 2026-07-26 14:22:22 +02:00
Ion Gaztañaga 1ca8484469 Improve benchmarking:
- Add group geometric mean
- Reformat output table: adjust columns + raw ns
- Clarify test case names
2026-07-26 12:31:22 +02:00
Ion Gaztañaga f95cab1976 Fixed argument list in merge_dst_bounded call in segmented_merge.hpp. 2026-07-26 12:26:46 +02:00
Ion Gaztañaga 32749b8677 Improved comments and corrected run start/length calculation in segmented_search_n 2026-07-26 12:26:33 +02:00
Ion Gaztañaga 21bab82287 Simplified the main segmentation logic merging single-segment and final segment calls. Seems to enable code reduction up to 15-20% for simple algorithms without regressions and improved inlining. 2026-07-26 10:28:17 +02:00
Ion Gaztañaga b27f426cea Merge single-segment case with the final segment case to reduce code size. 2026-07-26 00:47:17 +02:00
Ion Gaztañaga dcae4895f1 Optimize for random-access iterators 2026-07-25 13:54:28 +02:00
Ion Gaztañaga 506a1b8f16 Forceinline output segmentation iteration 2026-07-25 13:53:45 +02:00
Ion Gaztañaga e17aa29592 Always unroll 2026-07-25 13:53:19 +02:00
Ion Gaztañaga b4363dc9e0 Add forceinline for the output segmentation part 2026-07-25 13:05:42 +02:00
Ion Gaztañaga eaf643b68b Compilation error fi both BOOST_CONTAINER_SEGMENTED_ENABLE_PRAGMA_UNROLL and BOOST_CONTAINER_SEGMENTED_DISABLE_PRAGMA_UNROLL are defined 2026-07-25 12:28:14 +02:00
Ion Gaztañaga 33343c219e Add missing newline 2026-07-22 23:08:36 +02:00
Ion Gaztañaga bd2e966ea7 Simplify random-access iterator optimization 2026-07-21 23:38:18 +02:00
Ion Gaztañaga d9ac3c9ded Add dual segmentation tests 2026-07-21 12:40:29 +02:00
Ion Gaztañaga 913fabe229 Add BOOST_CONTAINER_FORCEINLINE to random access specialization 2026-07-21 00:11:31 +02:00
Ion Gaztañaga 83bc287240 Add dual segmentation to swap_ranges and transform 2026-07-20 23:49:58 +02:00
Ion Gaztañaga 351b6cd58a Move MyFatInt into bench_utils.hpp 2026-07-20 17:15:27 +02:00
Ion Gaztañaga b980c5a773 Add new 17 and 27 groups and reorder tests lexicographically inside each group 2026-07-20 17:10:25 +02:00
Ion Gaztañaga f5933b8bb7 Use BOOST_LIKELY/UNLIKELY in several algorithms 2026-07-20 00:50:39 +02:00
Ion Gaztañaga 90bcbda065 Disable BENCH_ON long benchmark macro to avoid stalling runners 2026-07-20 00:50:06 +02:00
Ion Gaztañaga 11aa12b0e5 Add more test cases for segmented outputs and reorder algorithms 2026-07-20 00:49:08 +02:00
Ion Gaztañaga d2e22918d0 Avoid defining ELEMENT_SIZES twice 2026-07-20 00:38:15 +02:00
Ion Gaztañaga 980d7cf0f1 Use potentially more efficient _tzcnt_u64 and _lzcnt_u64 for MSVC x64 when available, although it will have little impacto in hub, which is memory-bounded. 2026-07-18 01:08:31 +02:00
Ion Gaztañaga 53fdd3c76d Take the comparison value by const reference 2026-07-16 00:41:09 +02:00
Ion Gaztañaga 4edcf2ae9f Use default allocator (void) for benchmarks. 2026-07-16 00:22:22 +02:00
Ion Gaztañaga 84446d0bff Pass arguments for the fixed-size loop by value instead of reference. 2026-07-16 00:21:37 +02:00
Ion Gaztañaga e7212a20a5 Optimize segmented_partition_copy for random-access iterators using fixed size iterations when both output ranges have enough room 2026-07-16 00:21:01 +02:00
Ion Gaztañaga 3f60aa86d1 Implement fixed size (32) boundless iteration for random access iterators 2026-07-16 00:01:54 +02:00