const str = "😀".repeat(10) const segmenter = new Intl.Segmenter(); function fold_graphemes(str, state, fun) { for (const { segment: grapheme } of segmenter.segment(str)) { state = fun(grapheme, state) } return state } let sum = 0 for(let i = 0; i < 100000; ++i) { sum += fold_graphemes(str, 0, (a, b) => b + a.length) } console.log(sum)