场景需求:必须确保离线下功能正常。因此,把所有数据点同步至模组中。数据点每个46byte。。计算过,存放2000左右内存是够用的。内存大小符合要求。
存放规则:key(文件名)+数据点内容(46byte),每个数据点产生一个小文件。
(如果都存放在一个文件中,在同步时(同步不是一次存放,是零散存放的CURD)特别的慢。每次需要一次读取出所有来进行CURD,这非常耗运行内存,所以没用)
现象: 当存放400个数据点小文件后,最先加载的数据点read很快,后面加载的数据点,很慢(大约2~4秒),最慢的是看见超过4s的。存储写入文件时基本2s~4s。。。
问题:如何加快这个速度? 这个io.readfle,为啥这么慢?有没有方法加快?需要1s内完成。
使用模组:Air720G
代码参考:
functionreadfile(filename)--打开指定文件并输出内容
local filehandle=io.open(filename,"r")--第一个参数是文件名,第二个是打开方式,'r'读模式,'w'写模式,对数据进行覆盖,'a'附加模式,'b'加在模式后面表示以二进制形式打开
if filehandle then--判断文件是否存在
local fileval=filehandle:read("*all")--读出文件内容
if fileval then
filehandle:close()--关闭文件
return fileval
else
log.info(filename,"文件为空")--文件不存在
end
else
log.info(filename,"文件不存在或文件输入格式不正确") --打开失败
end
return""
end
functionwritevalw(filename,value)--在指定文件中添加内容
local filehandle =io.open(filename,"w")--第一个参数是文件名,后一个是打开模式'r'读模式,'w'写模式,对数据进行覆盖,'a'附加模式,'b'加在模式后面表示以二进制形式打开
if filehandle then
filehandle:write(value)--写入要写入的内容
filehandle:close()
returntrue
else
print("文件不存在或文件输入格式不正确") --打开失败
end
returntrue
end
functiondeletefile(filename)--删除指定文件夹中的所有内容
if io.exists(filename) then
os.remove(filename)
end
end
functionfile_exists(filename)
local file =io.open(filename, "rb")
if file then file:close() end
return file ~=nil
-- return io.exists(filename)
end