История изменений
Исправление Anoxemian, (текущая версия) :
Бро, интересно стало. Смотри, развоплощение строки в таблицу дает буст x2, а узкое место я комментами пометил. Очень странное поведение, но что есть, то есть:
function mylen(s,n)
local count = 0
for a = 1, n do
local i = 1
count = 0
while s[i] do
--- if s[i] < 128 or s[i] >= 192 then
count = count + 1
--- end
i = i + 1
end
end
return count
end
function mylen2(s,n)
local count = 0
local len = #s
for a = 1, n do
count = 0
for i = 1, len do
byte = s:byte(i)
if byte < 128 or byte >= 192 then
count = count + 1
end
end
end
return count
end
local time = os.clock()
local bytes = { string.byte("Привет мир!", 1, -1) }
print(mylen(bytes, 100000))
print("Прошло: " .. os.clock()-time)
time = os.clock()
print(mylen2("Привет мир!", 100000))
print("Прошло: " .. os.clock()-time)
20
Прошло: 0.036844
11
Прошло: 0.168108
Исходная версия Anoxemian, :
Бро, интересно стало. Смотри, развоплощение строки в таблицу дает буст x2, а узкое место я комментами пометил. Очень странное поведение, но что есть, то есть:
function mylen(s,n)
local count = 0
for a = 1, n do
local i = 1
count = 0
while s[i] do
--- if s[i] < 128 or s[i] >= 192 then
count = count + 1
--- end
i = i + 1
end
end
return count
end
function mylen2(s,n)
local count = 0
local len = #s
for a = 1, n do
count = 0
for i = 1, len do
byte = s:byte(i)
if byte < 128 or byte >= 192 then
count = count + 1
end
end
end
return count
end
local time = os.clock()
local bytes = { string.byte("Привет мир!", 1, -1) }
print(mylen(bytes, 100000))
print("Прошло: " .. os.clock()-time)
time = os.clock()
print(mylen2("Привет мир!", 100000))
print("Прошло: " .. os.clock()-time)