¿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
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
OAuth 2.0 y autorización JWT en Go: guía práctica
Las mejores IDE y herramientas para desarrollo en Go: de la A a la Z
Server-Sent Events en JavaScript: Tiempo real sin WebSocket
Integración con ChatGPT API en Rust: potencia y velocidad en un solo paquete