From 2b77bfd8536dca8ffc3086b2386c56f21926ebe8 Mon Sep 17 00:00:00 2001 From: Robert Sayre Date: Sat, 22 Dec 2018 13:52:49 -0800 Subject: [PATCH] [fix] improve style resolver performance Script time in the benchmark was profiled by adding `console.profile` around the timings for script time. The call to Array.join in the resolve function stood out. Since the code already iterates over the array it can run slightly faster by building the cache key in that loop instead. Close #1213 --- .../src/exports/StyleSheet/ReactNativeStyleResolver.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/react-native-web/src/exports/StyleSheet/ReactNativeStyleResolver.js b/packages/react-native-web/src/exports/StyleSheet/ReactNativeStyleResolver.js index 4b8d593e..69e576f2 100644 --- a/packages/react-native-web/src/exports/StyleSheet/ReactNativeStyleResolver.js +++ b/packages/react-native-web/src/exports/StyleSheet/ReactNativeStyleResolver.js @@ -84,15 +84,19 @@ export default class ReactNativeStyleResolver { // otherwise fallback to resolving const flatArray = flattenArray(style); let isArrayOfNumbers = true; + let cacheKey = ''; for (let i = 0; i < flatArray.length; i++) { const id = flatArray[i]; if (typeof id !== 'number') { isArrayOfNumbers = false; } else { + if (isArrayOfNumbers) { + cacheKey += (id + '-'); + } this._injectRegisteredStyle(id); } } - const key = isArrayOfNumbers ? createCacheKey(flatArray.join('-')) : null; + const key = isArrayOfNumbers ? createCacheKey(cacheKey) : null; return this._resolveStyleIfNeeded(flatArray, key); }