easyflash随着数据存储量增加,耗费时间加长

发布于 2019-03-11 15:02:21
项目需要,每秒采集一次传感器,每次存储数据大小为32bytes,三个月数据循环覆盖;考虑使用easyflash,配置参数如下:

#define PKG_USING_EASYFLASH
#define PKG_EASYFLASH_ENV
#define PKG_EASYFLASH_ENV_AUTO_UPDATE
#define PKG_EASYFLASH_ENV_VER_NUM 0
#define PKG_EASYFLASH_ERASE_GRAN 1024*1024*16
#define PKG_EASYFLASH_WRITE_GRAN_1BIT
#define PKG_EASYFLASH_WRITE_GRAN 1
#define PKG_EASYFLASH_START_ADDR 0
#define PKG_EASYFLASH_DEBUG
#define PKG_USING_EASYFLASH_LATEST_VERSION
#define PKG_EASYFLASH_VER_NUM 0x99999


测试过程发现,随着数据量增加,耗费时间越来越长。

刚开始耗时20ms,存储到46323/16777216的时候耗时489ms;不知道是配置问题,还是说确实会存在这个问题

查看更多

关注者
0
被浏览
1.9k
13 个回答
armink
armink 2019-03-11
每秒都存,一小时就是 3600 个环境变量,这个确实没法做更多时间方面的优化。

你也可以试试 EasyFlash 自带的 log 功能,对于你这种数据量大的循环存储方案蛮适合。
ymh792260950
ymh792260950 2019-03-11
armink 发表于 2019-3-11 16:30
每秒都存,一小时就是 3600 个环境变量,这个确实没法做更多时间方面的优化。

你也可以试试 EasyFlash 自 ...

虽然要求是每秒存储一次,有可能设备不工作的时候,这段时间数据就是空的。log功能中,ef_log_write(const uint32_t *log, size_t size);写入函数没带索引,这样读取的时候,ef_log_read(size_t index, uint32_t *log, size_t size);就无法知道查询的数据对应的index位置;要是写入的时候带index,这样子可以根据时间戳来排列存储的数据位置,这样就完美了
春和景明
春和景明 2019-03-14
每秒的数据都有用?如果是这样的话,我觉得还不如用sd卡,把这些个数据用一定格式保存在文件里好呢。用easyflash感觉不太合适,弄个文件系统感觉还行。
ymh792260950
ymh792260950 2019-03-17
春和景明 发表于 2019-3-14 11:01
每秒的数据都有用?如果是这样的话,我觉得还不如用sd卡,把这些个数据用一定格式保存在文件里好呢。用easy ...


嗯,我也在考虑存储在sd卡里面,不过设备带屏幕,数据存储的时候耗时太长,屏幕刷新变得很慢,这也很头疼
ymh792260950
ymh792260950 2019-07-07
armink 发表于 2019-3-11 16:30
每秒都存,一小时就是 3600 个环境变量,这个确实没法做更多时间方面的优化。

你也可以试试 EasyFlash 自 ...


天龙哥,请教下easyflash有没有哪个函数返回env总共有多少个变量
armink
armink 2019-07-07
ymh792260950 发表于 2019-7-7 09:32
天龙哥,请教下easyflash有没有哪个函数返回env总共有多少个变量

暂时没有这个 api 呢
另外,最近 EasyFlash 的速度做了很大的提升,你可以试试最新版哈
ymh792260950
ymh792260950 2019-07-08
armink 发表于 2019-7-7 23:43
暂时没有这个 api 呢
另外,最近 EasyFlash 的速度做了很大的提升,你可以试试最新版哈
...


嗯,目前用的就是4.0版本。
ymh792260950
ymh792260950 2019-07-18
armink 发表于 2019-7-7 23:43
暂时没有这个 api 呢
另外,最近 EasyFlash 的速度做了很大的提升,你可以试试最新版哈
...


天龙哥,使用内部flash已经运行10来天,挺正常的;目前在研究外部spi flash,发现读写速度非常慢,不知道是移植问题,还是哪里问题,采用sfud
armink
armink 2019-07-18
ymh792260950 发表于 2019-7-18 11:00
天龙哥,使用内部flash已经运行10来天,挺正常的;目前在研究外部spi flash,发现读写速度非常慢,不知道 ...


检查下 SPI 驱动吧,也可以使用 sf bench 测试下性能
ymh792260950
ymh792260950 2019-07-23
armink 发表于 2019-7-18 12:42
检查下 SPI 驱动吧,也可以使用 sf bench 测试下性能


多谢指导,确实是spi的频率设置的问题,目前该问题已解决。这里提个建议:下一个版本可否提供一个查找所有env的名称接口,类似文件系统里面查找所有目录一样:),目前解决方法是从env_iterator里面改造来用,不过测试发现耗时过长:lol
armink
armink 2019-07-24
ymh792260950 发表于 2019-7-23 09:27
多谢指导,确实是spi的频率设置的问题,目前该问题已解决。这里提个建议:下一个版本可否提供一个查找所 ...


多谢建议哈。现在性能这块应该比年初提升很多,不知道你有没有体验到
ymh792260950
ymh792260950 2019-07-24
armink 发表于 2019-7-24 09:27
多谢建议哈。现在性能这块应该比年初提升很多,不知道你有没有体验到


确实性能提升不少,特别是不再占用RAM,而且速度也快了,希望越做越好:lol
zsurge
zsurge 2019-10-09
armink 发表于 2019-3-11 16:30
每秒都存,一小时就是 3600 个环境变量,这个确实没法做更多时间方面的优化。

你也可以试试 EasyFlash 自 ...


龙哥,我的freeRTOS+sfud+easyflash ,随便写一条记录ef_set_env和再读出来ef_get_env,都需要花6秒时间,您认为我那个地方出问题的可能性比较大?感谢。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览