C # Expression régulière
plus lente que plus lent d
[0-9]
Cet article traite d'une découverte surprenante dans le moteur d'expression régulière C #:
, même si d
est un super ensemble de [0-9]
. [0-9]
d
La différence entre
d
[0-9]
La raison principale de la différence d'efficacité est la différence entre ces deux caractères:
:
d
: d
ne correspond que du numéro 0-9. Il s'agit d'une représentation compacte du jeu de caractères . [0-9]
[0123456789]
Lors de la correspondance de la chaîne avec l'expression régulière, le moteur d'expression régulière doit comparer chaque caractère dans la chaîne avec la classe de caractères spécifiée. Pour , il doit effectuer des inspections supplémentaires pour déterminer si le caractère est un numéro Unicode, qui peut être supérieur au caractère simple de vérification dans la plage de 0-9. Le code de test fourni par démontre cette différence de performances. Sur plus de 10 000 chaînes aléatoires (chaque chaîne contient environ 50% des nombres), les résultats suivants sont obtenus:
d
Expression régulière
Expression régulière : 00: 00: 00.1357972 (rapide)
Expression régulière
: 00: 00: 00.1388997 (légèrement plus lente qued
[0-9]
[0123456789]
. [0-9]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!