From 887aa9596795f28be3c67c20346c84ceef8382a9 Mon Sep 17 00:00:00 2001 From: lustoykov Date: Thu, 17 Jan 2019 11:15:25 +0100 Subject: [PATCH] Cache regex creation This is preventive measure to avoid unnecessary regex creation, although the impact is questionable since the fallback pragma is created once at most before the dependencies are collected. So we probably get a single cache hit if we are lucky --- .../core/parcel-bundler/src/transforms/babel/jsx.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/core/parcel-bundler/src/transforms/babel/jsx.js b/packages/core/parcel-bundler/src/transforms/babel/jsx.js index 687572d9749..48e37d1c45e 100644 --- a/packages/core/parcel-bundler/src/transforms/babel/jsx.js +++ b/packages/core/parcel-bundler/src/transforms/babel/jsx.js @@ -24,9 +24,17 @@ function createJSXRegexFor(dependency) { * package.json is empty or missing yet and therefore pragma cannot * be determined based on pkg.dependencies / pkg.devDependencies */ +const cacheJsxRegexFor = {}; function maybeCreateFallbackPragma(asset) { for (const dep in JSX_PRAGMA) { - if (asset.contents.match(createJSXRegexFor(dep))) { + let regex = cacheJsxRegexFor[dep]; + + if (!regex) { + regex = createJSXRegexFor(dep); + cacheJsxRegexFor[dep] = regex; + } + + if (asset.contents.match(regex)) { return JSX_PRAGMA[dep]; } }