2009-07-02 8 views
3

Wenn ein regulärer Ausdruck JavaScript ausgeführt wird, ist die Regex-Engine, die den Ausdruck kompilierten Code auswertet? oder die Engine selbst ist in Javascript geschrieben?In JavaScript werden reguläre Ausdrücke in kompiliertem Code ausgewertet?

Während ich einige grundlegende String-Matches-Tests durchführte, stellte ich fest, dass ein einzelner Regex wesentlich schneller ist als meine JavaScript-Funktion, die das Gleiche tut. Daher fragte ich mich, warum der reguläre Ausdruck schneller war.

P.S: Ich bin völlig neu in Regex.

Antwort

6

Das wäre bis zur Implementierung, aber jede Implementierung, die ich kenne (wie Gecko, Trident), tut dies in kompiliertem Code.

3

Wenn eine Implementierung nativen Code verwendet, hängt das von der js-Engine ab.

Sie können Ihren Javascript-Code jedoch beeinflussen, um schneller zu sein.

Wenn Sie die Javascript-Regex-Syntax verwenden und die /myregexhere/-Syntax verwenden, wird der reguläre Ausdruck jedes Mal kompiliert, wenn der Code ausgeführt wird. Wenn Sie das RegEx-Objekt in Javascript verwenden, können Sie Ihre regulären Ausdrücke kompilieren und eine bessere Leistung erzielen, wenn Sie das gleiche Muster mehrmals verwenden.

+0

Die/myregexhere/Syntax sollte ebenfalls kompiliert werden. –

+0

Wenn es in einer Variablen gespeichert ist, wird es andernfalls erneut ausgeführt und kompiliert. – Kekoa