Un programador analiza tres formas de ordenar colecciones de cadenas en Rust sin distinguir entre mayúsculas y minúsculas, comparando su rendimiento con un benchmark reproducible. El primer enfoque emplea sort_by_cached_key combinado con to_lowercase(), que calcula la clave en minúsculas una sola vez por elemento; el segundo recurre a sort_by con un iterador que aplica char::to_lowercase() sobre los caracteres UTF-8 durante la propia comparación, sin asignar memoria adicional; el tercero utiliza la crate unicase, que envuelve cada cadena en un tipo UniCase capaz de comparar de forma insensible al caso.
Las pruebas se ejecutaron en un MacBook Pro con chip M2 Max, ordenando vectores de 1, 5, 10, 100, 1.000 y 10.000 nombres generados con la crate fake. Para 10.000 elementos, sort_by_cached_key completó la operación en una mediana de 864,8 µs (11,56 Mitem/s), frente a los 5,572 ms (1,794 Mitem/s) de la variante basada en iteradores y los 1,757 ms (5,688 Mitem/s) de unicase.
La conclusión es clara: sort_by_cached_key merece la pena salvo en colecciones triviales de un solo elemento. La conversión carácter a carácter sobre UTF-8 resulta mucho más lenta de lo esperado y anula el beneficio teórico de evitar asignaciones. La sorpresa es que unicase, a pesar de complicar la comparación, rinde mejor que el método manual con iteradores en tamaños grandes, aunque sigue siendo claramente más lento que la clave precalculada en caché.
