Was ist der schnellste / effizienteste Weg, um Zeilen in Rebol zu zählen?

Gegeben eine ZeichenfolgestringWas ist der schnellste / effizienteste Weg, um Zeilen darin zu zählen? Akzeptiert die besten Antworten für jeden Rebol-Geschmack. Ich habe unter der Annahme gearbeitet, dass dieparse [some [thru]] Kombination war der schnellste Weg, um eine Zeichenfolge zu durchlaufen, aber dann weiß ich das nicht mit Sicherheit, daher wenden wir uns SO zu:

count-lines: func [string [string!] /local count][
    parse/all string [
        (count: 1) some [thru newline (count: count + 1)]
    ]
    count
]

Oder:

count-lines: func [string [string!] /local count][
    count: 0
    until [
        count: count + 1
        not string: find/tail string newline
    ]
    count
]

Und wie wäre es mit Schaltern? Wie effizient ist die Wiederholung?

count-lines: func [string [string!]][
    repeat count length? string [
        unless string: find/tail string newline [
            break/return count
        ]
    ]
]

Aktualisieren: Die Zeilenzählung erfolgt nach dem Prinzip des Texteditors:

Ein leeres Dokument hat immer noch eine Zeilenzahl von eins. So:

>> count-lines ""
== 1
>> count-lines "^/"
== 2

Antworten auf die Frage(9)

Ihre Antwort auf die Frage