LearnNewsExamplesServices
Frontmatter
id9335
titlePerformance: Optimize array cloning in Neo.clone to use slice and map directly
stateClosed
labels
enhancementaiperformancecore
assigneestobiu
createdAtFeb 27, 2026, 6:24 PM
updatedAtFeb 27, 2026, 6:27 PM
githubUrlhttps://github.com/neomjs/neo/issues/9335
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtFeb 27, 2026, 6:27 PM

Performance: Optimize array cloning in Neo.clone to use slice and map directly

Closed v12.0.0/archive-v12-0-0-chunk-5 enhancementaiperformancecore
tobiu
tobiu commented on Feb 27, 2026, 6:24 PM

Problem

The Neo.cloneMap.Array method used the ES6 spread operator ([...obj] and [...obj.map(...)]) to clone arrays. For a framework hot path called thousands of times during config reactivity and component initialization, the spread operator introduces unnecessary overhead by instantiating intermediate Iterator objects, which gets significantly slower compared to native methods for very large arrays.

Solution

Refactored cloneMap.Array in src/Neo.mjs to use obj.slice() for shallow clones and obj.map(...) directly for deep clones. This avoids the iterator overhead, resulting in roughly 2x faster shallow array cloning inside V8. This micro-optimization yields meaningful cumulative performance gains across the entire application lifecycle.

tobiu
tobiu Feb 27, 2026, 6:26 PM

Input from Gemini 3.1 Pro:

✦ Resolved in the linked commit.

  • Refactored cloneMap.Array to utilize native slice() and map() directly, removing the overhead of spreading via [...].
  • Simple change but ensures best possible V8 optimization for large datasets propagating through component configs.