Maison >développement back-end >Golang >Optimisation de l'exécution des expressions régulières
l'éditeur php Youzi vous présentera l'optimisation du runtime des expressions régulières. Les expressions régulières sont un outil puissant pour la correspondance et le traitement des chaînes, mais elles peuvent entraîner des problèmes de performances lorsque vous travaillez avec des données à grande échelle. Afin d'améliorer l'efficacité d'exécution des expressions régulières, nous pouvons adopter certaines stratégies d'optimisation, telles que l'utilisation de la correspondance paresseuse, l'évitement du recours au retour en arrière et l'utilisation de modèles de correspondance plus précis. Ces techniques d'optimisation peuvent nous aider à utiliser les expressions régulières plus efficacement dans le développement réel et à améliorer les performances du programme.
La plupart des expressions régulières sont "constantes" tout au long de leur vie. Est-ce une bonne idée d'utiliser des expressions régulières global pour accélérer l'exécution ? Par exemple :
func work() { r := regexp.mustcompile(`...`) if r.matchstring(...) { ... } }
Comparez :
var r *regexp.Regexp func work() { if r.MatchString(...) { ... } } func init() { r = regexp.MustCompile(`...`) }
Y a-t-il des différences significatives entre ces deux versions ?
work()
soit appelé fortement)Laquelle des réponses ci-dessus est correcte, ou la réponse n'est-elle pas simplement noire/blanche ?
Si vous n'utilisez la même regex qu'une seule fois (par exemple "d+
") -> cela ne vaut pas la peine d'utiliser une regex globale.
Si vous utilisez souvent la même expression régulière (par exemple "d+
") ->
func benchmark01(b *testing.b) { for i := 0; i < b.n; i++ { r := regexp.mustcompile(`\d+`) r.matchstring("aaaaaaa123bbbbbbb") } } func benchmark02(b *testing.b) { r := regexp.mustcompile(`\d+`) for i := 0; i < b.n; i++ { r.matchstring("aaaaaaa123bbbbbbb") } }
Benchmark01 Benchmark01-4 886909 1361 ns/op Benchmark02 Benchmark02-4 5368380 232.8 ns/op
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!