Sorting with SIMD
If you are exclusively moving numbers around in an array, SIMD sorting sounds great.<p>But when you want to actually sort things, it's different.  You have objects in an array, the objects will have one member which is a Key that you will sort the objects on.<p>In order to create a sorted permutation of the list, you either need to rearrange the list of object pointers (fast), rearrange the memory of the objects (slow), or you simply output a list of array indexes that represents what the sort order should be (fast).<p>Code that doesn't physically move the object memory around creates indirection.  Indirection makes any SIMD sorting depend on scatter-gather in order to get data in.  Scatter-Gather causes random memory accesses which don't cache as well as sequential access.