forked from boostorg/move
Optimize case with 256 keys or less.
This commit is contained in:
@ -292,9 +292,18 @@ bool adaptive_sort_combine_all_blocks
|
|||||||
|
|
||||||
//Combine to form l_merged*2 segments
|
//Combine to form l_merged*2 segments
|
||||||
if(n_keys){
|
if(n_keys){
|
||||||
adaptive_sort_combine_blocks
|
size_type upper_n_keys_this_iter = 2*l_merged/l_block;
|
||||||
( keys, comp, !use_internal_buf || is_merge_left ? first : first-l_block
|
if(upper_n_keys_this_iter > 256){
|
||||||
, l_data, l_merged, l_block, use_internal_buf, common_xbuf, xbuf, comp, is_merge_left);
|
adaptive_sort_combine_blocks
|
||||||
|
( keys, comp, !use_internal_buf || is_merge_left ? first : first-l_block
|
||||||
|
, l_data, l_merged, l_block, use_internal_buf, common_xbuf, xbuf, comp, is_merge_left);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
unsigned char uint_keys[256];
|
||||||
|
adaptive_sort_combine_blocks
|
||||||
|
( uint_keys, less(), !use_internal_buf || is_merge_left ? first : first-l_block
|
||||||
|
, l_data, l_merged, l_block, use_internal_buf, common_xbuf, xbuf, comp, is_merge_left);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
size_type *const uint_keys = xbuf.template aligned_trailing<size_type>();
|
size_type *const uint_keys = xbuf.template aligned_trailing<size_type>();
|
||||||
|
@ -868,7 +868,7 @@ void initialize_keys( RandIt first, RandIt last
|
|||||||
typedef typename iterator_traits<RandIt>::value_type value_type;
|
typedef typename iterator_traits<RandIt>::value_type value_type;
|
||||||
std::size_t count = std::size_t(last - first);
|
std::size_t count = std::size_t(last - first);
|
||||||
for(std::size_t i = 0; i != count; ++i){
|
for(std::size_t i = 0; i != count; ++i){
|
||||||
*first = value_type(i);
|
*first = static_cast<value_type>(i);
|
||||||
++first;
|
++first;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user