| 文字列の文字コード単位の比較であれば、String.CompareOrdinalが一番速いでしょう。自前実装しようがネイティブ関数を呼び出してみようが恐らく歯が立ちません。
常にソートされていれば十分なのであれば、SortedList<TKey, TValue>を使えばいいかもしれません。Addのコストが増える代わりに、手動でソートする必要がなくなります。 // リストに追加後にソートキーとなる値が変わらないという前提も必要ですが。
前準備してもいいのであれば、先頭から16文字ずつをそれぞれulongに変換してulong配列に保持しておき、ソート時にまずこの配列同士を順次比較し、それが同じであればString.CompareOrdinal(string, int, string, int, int)で残りの文字列を比較する、という方法は、単純にString.CompareOrdinalするよりいくらか速くなりそうです。 |