Avatar ·

¿Por qué \d en C# funciona más lento que [0-9] y cómo solucionarlo?

¡Hola, colegas! Estoy escribiendo un parser de logs en C# usando expresiones regulares. Noté un comportamiento extraño: cuando uso \d para buscar dígitos, el rendimiento cae varias veces en comparación con [0-9]. Aquí hay un ejemplo del código que estoy probando: ```csharp using System; using System.Diagnostics; using System.Text.RegularExpressions; class Program { static void Main() { string input = string.Concat(Enumerable.Repeat("1234567890", 100000)); var sw = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { Regex.Match(input, @"\d+"); } sw.Stop(); Console.WriteLine($"\\d: {sw.ElapsedMilliseconds} ms"); sw.Restart(); for (int i = 0; i < 1000; i++) { Regex.Match(input, @"[0-9]+"); } sw.Stop(); Console.WriteLine($"[0-9]: {sw.ElapsedMilliseconds} ms"); } } ``` Los resultados me sorprendieron: \d funciona