Hmm ... vielleicht wäre es performanter ich würde matches = matches [] weglassen und einfach einfordern, dass drei Parameter übergeben werden, von denen einer eben ein leeres Array ist?
Es gibt sehr gute Profiling-Tools für JavaScript mit denen sich zielgerichtete Performance-Analysen betreiben lassen – mit spekulativen Optimierungen kommt man in der Regel nicht weit. Die große Herausforderung liegt darin zu überbrücken, dass sich die Modelle der JS-Semantik, die moderne Jit-Compiler haben, wesentlich von unseren intuitiven Vorstellungen unterscheiden.
Und trotzdem spekuliere ich mal, dass dein Flaschenhals die vielen synchronen IO-Operationen mit der Festplatte sind und die asynchronen Pendants der fs
-Funktionen dir einen massiven Boost geben könnten.
Einen Schönheitsfehler hat matches = matches || []
als Pattern für Default-Parameter dennoch: Es funktioniert generell nicht mit Parametern, die falsy
Werte annehmen können. Stattdessen hat JavaScript heute seine eigene Syntax dafür:
function foo (bar = []) { /* ... */ }