Igor van den Hoven
Igor van den Hoven
I ran some calculations and it seems like the cubic root of the partition size might be a good value for the pseudomedian. I'm pretty happy with some of the...
Increasing FLUX_OUT to 32 increases the comparison count by quite a bit, I'm trying to keep performance balanced for both integers and strings. I updated the source code with the...
I'm a bit hesitant about randomization since it might make it difficult to pinpoint bad patterns. I'll run some tests to see for myself if the failure rate is 1...
With brute force testing I come out at 1 in 1333.33 for the pseudomedian of 9. In my own tests I haven't been able to beat pseudomedian of 9 with...
I guess `pta = array + rand() % div;` would do the trick in `median_of_sqrt`. I'd still rather avoid it without known killer patterns. I've looked into run detection in...
Some small updates. 1. Added crude offset randomization to FUNC(median_of_sqrt), not sure if finer control is beneficial. 2. Added run detection to FUNC(flux_analyze), should detect most pipe-organ distributions, performance loss...
Some more updates. 1. Added branchless parity merges to the small array sorting routine of quadsort. Increases overall performance by about 15%. 2. The reverse partitioner keeps sorting the leftover...
Wouldn't that fail to measure things like cache misses and branch mispredictions? It would be a useful metric to keep track of though. What I have currently is within 1%...
I think blit/tail merging requires a block size of 32, 128, 512, etc. 8 might work though I haven't tried. Quadsort so far seems to be the fastest comparison sort...
I figured to double check my benchmark and you're correct about the pseudomedian of 25 not being great. ``` | Name | Items | Type | Best | Average |...