LINUX.ORG.RU

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

Исправление 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== 

Вот тебе и, слишком много аллокаций в регрепах, убавить и взлетит как самолёт.