minor unroll
This commit is contained in:
parent
e7b677e4db
commit
298edba5d2
@ -108,9 +108,10 @@ namespace MagyarSort {
|
||||
template<typename COUNTER_TYP>
|
||||
static inline void countOccurences(uint32_t arr[], COUNTER_TYP size, COUNTER_TYP *radicsOut) noexcept {
|
||||
COUNTER_TYP i = 0;
|
||||
// #pragma GCC unroll 4
|
||||
//#pragma GCC unroll 4
|
||||
for(; i < size - 64; i += 64) {
|
||||
// Prefetch for read level-1 cache
|
||||
//__builtin_prefetch(&arr[i + (1 * 16)], 0/*r*/, 2/*L2 or L3 cache likely*/);
|
||||
__builtin_prefetch(&arr[i + (1 * 16)]);
|
||||
// Creates no object, struct is empty
|
||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
||||
@ -183,6 +184,7 @@ namespace MagyarSort {
|
||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i + 63, radicsOut);
|
||||
}
|
||||
|
||||
#pragma GCC unroll 4
|
||||
for(; i < size; ++i) {
|
||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user