Jaki jest najszybszy / najbardziej wydajny sposób liczenia linii w Rebol?

Podano ciągstring, jaki jest najszybszy / najbardziej efektywny sposób na zliczanie linii? Przyjmie najlepsze odpowiedzi na każdy smak Rebol. Pracowałem przy założeniu, żeparse [some [thru]] kombinacja była najszybszym sposobem na przejście ciągu, ale nie wiem tego na pewno, dlatego zwracając się do SO:

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

Lub:

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

A co z licznikami? Jak wydajne jest powtarzanie?

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

Aktualizacja: liczba linii zależy od zasady edytora tekstu:

Pusty dokument nadal ma liczbę linii jednego. Więc:

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

questionAnswers(9)

yourAnswerToTheQuestion