strxfrm could be faster
The implementation of strxfrm tends to expand to too many bytes, requiring extra malloc overhead, and increasing the cost of using the transformed output.
It turns out that most priority levels only use a few priorities. Some clever coding could separate the priorities for each level, and record the maximum priority or a mask, so that we could avoid expanding strings further than was necessary for the locale. This would potentially go a long way to improving the overall performance of collation using strxfrm.