Mir wurde gesagt, dass die Deaktivierung von Rückreferenzen in Perl die Performance verbessert (vorausgesetzt, Sie verwenden sie nicht), und wenn Sie keine Rückreferenzen verwenden, wird Perl dies selbst tun.Deaktivieren von Rückreferenzen in Perl
Jetzt habe ich ein Perl-Skript mit einer großen Anzahl von Regex in ihm und nur ein einziges verwendet eine Rückreferenzierung und ich möchte folgendes wissen:
- Gegeben Ich habe eine sehr große Anzahl von regex (Nehmen wir an, der Großteil meiner Verarbeitungszeit ist Regex.) Bedeutet die Deaktivierung von Rückmeldungen eine signifikante Leistungsverbesserung? Oder gibt es Kriterien, anhand derer ich wissen kann, ob dies der Fall ist?
- Gibt es eine Möglichkeit, ich kann Rückreferenzen einmal am Anfang deaktivieren und nur wieder aktivieren, wenn ich es brauche (ich weiß über
(?:
, aber ich möchte es nicht zu jeder Gruppierung hinzufügen)? - würde Scoping erlauben Perl für die Optimierung dieses Rückverweisverhaltens für mich (dh ändert sich
sub
odereval
, ob Perl Backreferencing für Dinge außerhalb davon deaktiviert)?
* »unter der Annahme, dass die meiste meiner Bearbeitungszeit Regex ist« * O RLY? [Profil] (http://p3rl.org/Devel::NYTProf) um Ihre Annahmen zu entlarven. Ich wette, Ihr Programm ist nicht-trivial und * wird nicht die meiste Zeit in den Regexes verbringen. – daxim