Gyorsba csekkeltem alternativ modon, szvsz ez itt mar a kernelen mulik.
@snail:~/tbs/lua/proc_stat_speed_test$ time ./luajit test.lua
4108285 0
real 0m42.784s
user 0m13.936s
sys 0m28.348s
A luajit sajat patch-el optimalizalt, lfs szintugy, a szuboptimalis lua kod meg ez volt:
@snail:~/tbs/lua/proc_stat_speed_test$ cat test.lua
require 'lfs'
sDir = '/proc'
ctr, err = 0, 0
for i = 0, 10000, 1 do
for sFileName in lfs.dir( sDir ) do
if string.match( sFileName, '^[0-9]*$' ) then
local fStatFile = io.open( sDir ..'/'.. sFileName ..'/stat', 'r' )
if fStatFile then
local sLine = fStatFile:read()
if sLine then
ctr = ctr +1
else
err = err +1
end
fStatFile:close()
end
end
end
end
print( ctr, err )
szerk.: nem baratsagos a tabulalas, szori.