Guten Abend Rony
> On 20 Jul 2026, at 18:54, Rony G. Flatscher <[email protected]> wrote: > > The questions: > > So there are two indexers/iterators, one for CodePoints, one for Graphemes? > What is the purpose of "storage limits" when using both iterators, why do > they exist? > See https://html-preview.github.io/?url=https://github.com/jlfaucher/executor5-bulk/blob/main/main/trunk/extensions/unicode/rxunicode.html#init-2 In particular the example 3 and 4. Illustration: Tested on macOS: Assuming you have a 10 MB string. tutor off string = "Family 👨👩👧" || "*"~copies(10000000) || "🤶 and 🎅." Duration 0.03 s. The activity monitor shows 143.9 MB for the rexx process. You want to test if the string starts with "Family 👨👩👧" and ends with "🤶 and 🎅.". No need to store the codepoint indexes, you need to store a few grapheme indexes (let say 10) on both extremities. A full scan is always performed, but the storage is limited. indexer = .RexxUnicodeStringIndexer~new(string, 0, 10, 0, 0, 10) The rexx process memory remains stable at 143.9 MB Duration 14 s (it's not native) indexer~graphemeCount= -- 10000016 indexer~graphemeIndexes= -- [ 1, 2, 3, 4, 5, 6, 7, 8, 26, 27] indexer~endGraphemeIndexes= -- [ 10000039, 10000035, 10000034, 10000033, 10000032, 10000031, 10000030, 10000026, 10000025, 10000024] With an unlimited storage: indexer = .RexxUnicodeStringIndexer~new(string) Duration: 33.5 s The activity monitor shows 2.14 GB for the rexx process. indexer~graphemeIndexes~items= -- 10000016
_______________________________________________ Oorexx-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/oorexx-devel
