EasyFlash icon indicating copy to clipboard operation
EasyFlash copied to clipboard

怎么提升大量读写key-value时的效率

Open zsurge opened this issue 5 years ago • 5 comments

应用场景:从服务器上下发1万对key(8 byte)-value(20 byte)到外部FLASH,,当用户刷卡时,会生成一个key,需要对比本地所存储key,并进行对比; 现象:遍历1万个 8 byte的卡号,需要169秒,这个时间是无法接受的。 问题:怎么能够高效的遍历这1万个key;

zsurge avatar Mar 21 '20 02:03 zsurge

将第一个字节排序,或者建个表,首先查第一个字节,在依次查后面8个字节

wyang0824 avatar Mar 23 '20 08:03 wyang0824

感谢,我大概的思路跟您差不多。我是把把key做为一个表,单独存放,value是固定字节数,需要读数据的时候,先云存放key的表里去读取index,得到下标后,就用下标*value字节数做为地址,然后再去读这个地址。

zsurge avatar Mar 26 '20 09:03 zsurge

试试这两天新增的 V5.0 beta 吧,支持多个表以后,对于效率会提升多

armink avatar May 06 '20 07:05 armink

试试这两天新增的 V5.0 beta 吧,支持多个表以后,对于效率会提升多

感谢大大,我这两天会移植试下,然后给您反馈下使用情况。

zsurge avatar May 09 '20 02:05 zsurge

@zsurge 大佬,有两个疑问点,想请教一下您的。第一个是,key做成一个表,是存放在哪里呢?第二个是,key修改后,原来存放数据的位置被标记为dirty了,数据会存放到新的地址。如果表里的key顺序不变,用下表*value字节得到的地址是dirty的。是不是表里的key顺序也要变化了?

ckjjj avatar May 09 '22 02:05 ckjjj