Commit Graph

1980 Commits

Author SHA1 Message Date
Ion Gaztañaga 30af471e3c Manualy inline and optimize algorithms using the cleanup_blocks strategy. 2026-08-01 16:31:05 +02:00
Ion Gaztañaga 4bd1de6c05 Assign on out_path 2026-08-01 12:05:48 +02:00
Ion Gaztañaga 09b465f1d9 SImplify inlining layer 2026-08-01 11:54:05 +02:00
Ion Gaztañaga f844bd87f6 move find_end to the group 27. Removed equal_2r shorcut 2026-08-01 11:50:51 +02:00
Ion Gaztañaga cfac94208b Erase test artifact. 2026-08-01 10:15:00 +02:00
Ion Gaztañaga 6ab949dafc Added equal_2r to the bench 2026-08-01 01:18:58 +02:00
Ion Gaztañaga c69041f77b Added segmented_find_end to bench, removed partition_point 2026-08-01 01:12:52 +02:00
Ion Gaztañaga b2cc3b7bd0 Added segmented_find_end 2026-08-01 01:12:03 +02:00
Ion Gaztañaga e42b7ebeb4 Refactored all algorithms to use the detail header for internal utilities. 2026-08-01 01:11:06 +02:00
Ion Gaztañaga 753187abaa Disable C++17 deprecation warnings. 2026-08-01 00:52:35 +02:00
Ion Gaztañaga ad8e795c9d Implement unrolling only for GCC 2026-07-31 23:13:16 +02:00
Ion Gaztañaga 88a0e74bc1 Activate unroll for segmented_none_of 2026-07-31 20:02:05 +02:00
Ion Gaztañaga 5ea63f4f94 Fix maximum number of predicate calls according to the standard 2026-07-31 19:02:03 +02:00
Ion Gaztañaga 50c2b1bb4e Fix maximum predicate call limit per standard requirements 2026-07-31 18:44:54 +02:00
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