#include <IceRevisitedRadix.h>
Public Member Functions | |
inline_ udword | GetNbHits () const |
Returns the number of eraly exits due to temporal coherence. More... | |
inline_ udword | GetNbTotalCalls () const |
Returns the total number of calls to the radix sorter. More... | |
const inline_ udword * | GetRanks () const |
Access to results. mRanks is a list of indices in sorted order, i.e. in the order you may further process your data. More... | |
inline_ udword * | GetRecyclable () const |
mIndices2 gets trashed on calling the sort routine, but otherwise you can recycle it the way you want. More... | |
udword | GetUsedRam () const |
RadixSort () | |
RadixSort & | Sort (const float *input, udword nb) |
RadixSort & | Sort (const udword *input, udword nb, RadixHint hint=RADIX_SIGNED) |
~RadixSort () | |
Private Member Functions | |
void | CheckResize (udword nb) |
bool | Resize (udword nb) |
Private Attributes | |
udword | mCurrentSize |
Current size of the indices list. More... | |
udword | mNbHits |
Number of early exits due to coherence. More... | |
udword * | mRanks |
Two lists, swapped each pass. More... | |
udword * | mRanks2 |
udword | mTotalCalls |
Total number of calls to the sort routine. More... | |
Revisited Radix Sort. This is my new radix routine:
it may be worth recoding in asm... (mainly to use FCOMI, FCMOV, etc) [it's probably memory-bound anyway]
History:
Definition at line 26 of file IceRevisitedRadix.h.
RadixSort::RadixSort | ( | ) |
Constructor.
Definition at line 170 of file IceRevisitedRadix.cpp.
RadixSort::~RadixSort | ( | ) |
Destructor.
Definition at line 186 of file IceRevisitedRadix.cpp.
Definition at line 217 of file IceRevisitedRadix.cpp.
Returns the number of eraly exits due to temporal coherence.
Definition at line 47 of file IceRevisitedRadix.h.
Returns the total number of calls to the radix sorter.
Definition at line 45 of file IceRevisitedRadix.h.
Access to results. mRanks is a list of indices in sorted order, i.e. in the order you may further process your data.
Definition at line 37 of file IceRevisitedRadix.h.
mIndices2 gets trashed on calling the sort routine, but otherwise you can recycle it the way you want.
Definition at line 40 of file IceRevisitedRadix.h.
udword RadixSort::GetUsedRam | ( | ) | const |
Gets the ram used.
Definition at line 511 of file IceRevisitedRadix.cpp.
|
private |
Resizes the inner lists.
nb | [in] new size (number of dwords) |
Definition at line 204 of file IceRevisitedRadix.cpp.
Main sort routine. This one is for floating-point values. After the call, mRanks contains a list of indices in sorted order, i.e. in the order you may process your data.
input | [in] a list of floating-point values to sort |
nb | [in] number of values to sort, must be < 2^31 |
Definition at line 350 of file IceRevisitedRadix.cpp.
Main sort routine. This one is for integer values. After the call, mRanks contains a list of indices in sorted order, i.e. in the order you may process your data.
input | [in] a list of integer values to sort |
nb | [in] number of values to sort, must be < 2^31 |
hint | [in] RADIX_SIGNED to handle negative values, RADIX_UNSIGNED if you know your input buffer only contains positive values |
Definition at line 238 of file IceRevisitedRadix.cpp.
|
private |
Current size of the indices list.
Definition at line 54 of file IceRevisitedRadix.h.
|
private |
Number of early exits due to coherence.
Definition at line 59 of file IceRevisitedRadix.h.
|
private |
Two lists, swapped each pass.
Definition at line 55 of file IceRevisitedRadix.h.
|
private |
Definition at line 56 of file IceRevisitedRadix.h.
|
private |
Total number of calls to the sort routine.
Definition at line 58 of file IceRevisitedRadix.h.