前回の「Array.prototype.sort について」に引き続き、今度はTypedArrayのsortについて。実装は別だけど対応は基本的に同じなので簡単に。
Chrome の実装はtyped-array.tqあたりで、Quicksort が使われている。compareFunction がない場合は、TypedArraySortFastが実行され、この実行の内部では C++の std:sort が使われている。
Firefox の実装はTypedArray.jsあたりで、Quicksort が使われている。merge sort ではなく quicksort なのはおそらく TypedArray は数値のみなので stable であることを気にかける必要がないからだと思う(たぶん)。compareFunction がない場合は、8 ビット長の場合は CountingSort、16・32 ビット長の場合は RadixSort が使われている。
Safari の実装はTypedArrayPrototype.jsあたりで、merge sort が使われている。compareFunction がない場合は@typedArraySort
が使われるのだけど、実装がどこにあるのか見つけられなかった。
Microsoft Edge の実装はTypedArray.cppあたりで、Quicksort が使われている。
TypedArray の sort でも同様に O(n log n)を期待できる。
以上。