Pourquoi \\d en C# est-il plus lent que [0-9] ?
Bonjour à tous ! Je suis un développeur C# débutant et j'ai rencontré un problème inattendu lors de l'optimisation d'expressions régulières.\n\nJ'ai une tâche : vérifier si une chaîne est composée uniquement de chiffres. J'ai écrit deux variantes d'expressions régulières :\n\n1. `^\\d+$`\n2. `^[0-9]+$`\n\nIntuitivement, on pourrait penser que `\\d` devrait être plus rapide ou au moins aussi rapide, car c'est simplement un raccourci pour les chiffres. Mais j'ai fait un petit benchmark avec `Stopwatch` sur une chaîne de 1000 caractères (1000 chiffres aléatoires) et j'ai obtenu des résultats choquants :\n\n```\n\\d: ~450 ticks\n[0-9]: ~120 ticks\n```\n\nLa différence est presque de 4 fois ! J'ai exécuté le test 100 fois pour exclure le hasard. Les résultats sont stables.\n\nJ'utilise .NET 6, le `Regex` standard sans flags. Pourquoi cela se produit-il ? Pourtant, `\\d` et `[0-9]` devraient désigner la même chose.