LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

Смотри:

function utf8myLen2(s)
    local count = 0
    local len = #s
    for i = 1, len do
        local byte = string.byte(s, i)
        -- Проверяем, что байт НЕ начинается с 10xxxxxx
        if byte < 128 or byte >= 192 then
            count = count + 1
        end
    end
    return count
end

Вообще идея брать функции на си и переписывать их на луа - это то, с чего я начал. Но.

[38:25]Прошло: 0.0019999998621643
[38:26]Прошло: 1.0800000000745
[38:29]Прошло: 2.5789999999106

Так еще хуже, хотя тут разница не та, чтобы оценивать. Примерно одинаково с моим циклом.

Исправление LightDiver, :

Смотри:

function utf8myLen2(s)
    local count = 0
    local len = #s
    for i = 1, len do
        local byte = string.byte(s, i)
        -- Проверяем, что байт НЕ начинается с 10xxxxxx
        if byte < 128 or byte >= 192 then
            count = count + 1
        end
    end
    return count
end

Вообще идея брать функции на си и переписывать их на луа - это то, с чего я начал. Но.

[38:25]Прошло: 0.0019999998621643
[38:26]Прошло: 1.0800000000745
[38:29]Прошло: 2.5789999999106

Так еще хуже.

Исходная версия LightDiver, :

Смотри:

function utf8myLen2(s)
    local count = 0
    local len = #s
    for i = 1, len do
        local byte = string.byte(s, i)
        -- Проверяем, что байт НЕ начинается с 10xxxxxx
        if byte < 128 or byte >= 192 then
            count = count + 1
        end
    end
    return count
end

Вообще идея брать функции на си и переписывать их на луа - это то, с чего я начал. Но.

[31:09]Прошло: 0.0020000003278255
[31:11]Прошло: 1.9500000001863
[31:15]Прошло: 3.4199999999255

Так еще хуже.