diff options
author | Richard Viney <richard.viney@gmail.com> | 2024-10-08 00:16:52 +1300 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-10-07 18:19:43 +0100 |
commit | f63d960bdc8471de501604f782011a25fbac4124 (patch) | |
tree | 83ac3f6ae2a276561c2eb54aea1bc92dbec89128 /src | |
parent | 3f821a5755a27945c06d7f67fa00888e4a3e80ee (diff) | |
download | gleam_stdlib-f63d960bdc8471de501604f782011a25fbac4124.tar.gz gleam_stdlib-f63d960bdc8471de501604f782011a25fbac4124.zip |
Improve JS string performance by caching the Intl Segmenter
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam_stdlib.mjs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 50ebb46..1c0754f 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -156,9 +156,12 @@ export function graphemes(string) { } } +let segmenter = undefined; + function graphemes_iterator(string) { if (globalThis.Intl && Intl.Segmenter) { - return new Intl.Segmenter().segment(string)[Symbol.iterator](); + segmenter ??= new Intl.Segmenter(); + return segmenter.segment(string)[Symbol.iterator](); } } |