История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
text = io.open(arg[1], "r"):read("*a")
pattern = "[\xD0\xD1][\x80-\xBF][\x80-\xBF\xD0\xD1]*"
local uniq = { }
local count = 0
string.gsub(text,pattern,function(x)
if not uniq[x] then
uniq[x] = true;
count = count + 1
end
end)
print("Всего уникальных слов: " .. count)
time lua5.4 main.lua wim.fb2
Всего уникальных слов: 35515
real 0m0,196s
user 0m0,171s
sys 0m0,024s
35 тыщ уникальных слов ниочём.
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ g++ -g3 -O3 main.cpp
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ valgrind ./a.out
==669824== Memcheck, a memory error detector
....
==669844== HEAP SUMMARY:
==669844== in use at exit: 0 bytes in 0 blocks
==669844== total heap usage: 757,756 allocs, 757,756 frees, 82,083,147 bytes allocated
==669844==
Вот тебе и, слишком много аллокаций в регрепах, убавить и взлетит как самолёт. (хотя после дел debugger оно и так уже летает)
Так что неча ругать, и то и то хорошее :) Все молодцы и умницы
Исправление LINUX-ORG-RU, :
text = io.open(arg[1], "r"):read("*a")
pattern = "[\xD0\xD1][\x80-\xBF][\x80-\xBF\xD0\xD1]*"
local uniq = { }
local count = 0
string.gsub(text,pattern,function(x)
if not uniq[x] then
uniq[x] = true;
count = count + 1
end
end)
print("Всего уникальных слов: " .. count)
time lua5.4 main.lua wim.fb2
Всего уникальных слов: 35515
real 0m0,196s
user 0m0,171s
sys 0m0,024s
35 тыщ уникальных слов ниочём.
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ g++ -g3 -O3 main.cpp
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ valgrind ./a.out
==669824== Memcheck, a memory error detector
....
==669844== HEAP SUMMARY:
==669844== in use at exit: 0 bytes in 0 blocks
==669844== total heap usage: 757,756 allocs, 757,756 frees, 82,083,147 bytes allocated
==669844==
Вот тебе и, слишком много аллокаций в регрепах, убавить и взлетит как самолёт.
Так что неча ругать, и то и то хорошее :) Все молодцы и умницы
Исходная версия LINUX-ORG-RU, :
text = io.open(arg[1], "r"):read("*a")
pattern = "[\xD0\xD1][\x80-\xBF][\x80-\xBF\xD0\xD1]*"
local uniq = { }
local count = 0
string.gsub(text,pattern,function(x)
if not uniq[x] then
uniq[x] = true;
count = count + 1
end
end)
print("Всего уникальных слов: " .. count)
time lua5.4 main.lua wim.fb2
Всего уникальных слов: 35515
real 0m0,196s
user 0m0,171s
sys 0m0,024s
35 тыщ уникальных слов ниочём.
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ g++ -g3 -O3 main.cpp
dron@gnu:~/Рабочий-стол/Толстой Лев. Война и мир. Том 1 и 2 - royallib.com.fb2$ valgrind ./a.out
==669824== Memcheck, a memory error detector
....
==669844== HEAP SUMMARY:
==669844== in use at exit: 0 bytes in 0 blocks
==669844== total heap usage: 757,756 allocs, 757,756 frees, 82,083,147 bytes allocated
==669844==
Вот тебе и, слишком много аллокаций в регрепах, убавить и взлетит как самолёт.