Ich dachte über eine Verbesserung nach. Ich mache gerade viel Textverarbeitung von Protokolldateien.Wäre das Kompilieren eines Regex in native Assembly schneller als PCRE oder andere Regex-Engines?
Ich will nicht sagen, PCRE ist langsam/schnell oder irgendeine andere Implementierung für diese Angelegenheit.
Die Sprache, in der ich schreibe, ist in erster Linie Perl. Ich weiß, dass es eine leistungsstarke Regex-Engine hat und ich weiß, dass es expressiver ist als PCRE.
Ich habe diese Idee über eine kleine Regex-Engine in C++, die eine Regex auf rohe Nasm kompilieren würde.
Ich bin mir bewusst, dass PCRE ziemlich komplex ist, und ich gehe davon aus, dass ich viele Dinge, die von PCRE gemacht wurden, im Hinblick auf nicht notwendige Verarbeitung überspringen kann. Und ich könnte das sicherlich schneller machen als Perl, da es mit vm-ähnlichen Opcodes und allen möglichen Dingen arbeitet, die als Overhead betrachtet werden könnten.
Ich habe schon vor einiger Zeit eine Implementierung gestartet. Ich werde es hier nicht posten, da ich keine Probleme damit habe, ich könnte es bis zum Ende ausführen und eine Regex-Engine erhalten, die in der Lage ist, Captures zu machen, die in der Lage sind, Zeichenklassen zu interpretieren Ich habe den Teil nicht getan, wo ich die Regex in Assembler-Sprache umwandeln werde)
Wäre das eine gute Idee oder eine schlechte Idee? Was könnte schiefgehen, wenn es darum geht, eine gute Leistung zu erzielen?
tl; dr => könnte eine C++ - Mini-Regex-Engine, die eine native Assembly erzeugt, schneller sein als etablierte Regex-Implementierungen?
Was lässt Sie glauben, dass Ihr Motor schneller wird? – PSIAlt
Solange es alle Fälle behandelt, die Sie benötigen, und Sie einige rudimentäre Benchmarks tun, sage ich, gehen Sie dafür. Es ist mehr Arbeit, als die meisten Leute zu versuchen versuchen, also mehr Kraft für Sie! –
@PSIAlt das ist genau meine Frage. wäre es schneller? – average