//constant definitions for the Boost Sort library | |
// Copyright Steven J. Ross 2001 - 2014 | |
// Distributed under the Boost Software License, Version 1.0. | |
// (See accompanying file LICENSE_1_0.txt or copy at | |
// http://www.boost.org/LICENSE_1_0.txt) | |
// See http://www.boost.org/libs/sort for library home page. | |
#ifndef BOOST_SORT_SPREADSORT_DETAIL_CONSTANTS | |
#define BOOST_SORT_SPREADSORT_DETAIL_CONSTANTS | |
namespace boost { | |
namespace sort { | |
namespace spreadsort { | |
namespace detail { | |
//Tuning constants | |
//This should be tuned to your processor cache; | |
//if you go too large you get cache misses on bins | |
//The smaller this number, the less worst-case memory usage. | |
//If too small, too many recursions slow down spreadsort | |
enum { max_splits = 11, | |
//It's better to have a few cache misses and finish sorting | |
//than to run another iteration | |
max_finishing_splits = max_splits + 1, | |
//Sets the minimum number of items per bin. | |
int_log_mean_bin_size = 2, | |
//Used to force a comparison-based sorting for small bins, if it's faster. | |
//Minimum value 1 | |
int_log_min_split_count = 9, | |
//This is the minimum split count to use spreadsort when it will finish in one | |
//iteration. Make this larger the faster std::sort is relative to integer_sort. | |
int_log_finishing_count = 31, | |
//Sets the minimum number of items per bin for floating point. | |
float_log_mean_bin_size = 2, | |
//Used to force a comparison-based sorting for small bins, if it's faster. | |
//Minimum value 1 | |
float_log_min_split_count = 8, | |
//This is the minimum split count to use spreadsort when it will finish in one | |
//iteration. Make this larger the faster std::sort is relative to float_sort. | |
float_log_finishing_count = 4, | |
//There is a minimum size below which it is not worth using spreadsort | |
min_sort_size = 1000 }; | |
} | |
} | |
} | |
} | |
#endif |