FAL Partition Config Dynamically #99
Replies: 6 comments 20 replies
-
FAL 有这个 API ,你可以读取 CSV ,解析出来,再通过下面的 API 设置进去
|
Beta Was this translation helpful? Give feedback.
-
刚刚已经在 NodeMcu dev-esp32 分支上运行了 FlashDB 存取小量数据,FlashDB 表现非常优秀 我简单的进行了一下不严谨的测试 我首先测试了 500 条数据, 读取速度非常快,没有什么延迟的感觉 不太确定 FlashDB 内部使用的什么算法,但是 4000条 数据的时候, 当然 FlashDB 的缓存还是非常有效的,读取一次以后,延迟马上就没有了 我翻看了一下文档,issue / discussions 和 源代码, 没有关于 FlashDB 使用的算法,相关的 issue 都没有回复或者说明,我比较笨,当然也比较懒,不会通过源代码反向分析算法。 我有一个不成熟的想法,是不是可以这样
以上是我不成熟的两个小建议,你的项目,你决定 希望 FlashDB 能够发展壮大 |
Beta Was this translation helpful? Give feedback.
-
下面这段代码 Lines 218 to 223 in cea7a06 从以上代码可以看出来,只是用crc32来hash了一下key,并没有用hash直接hit,还是去遍历查找的O(n)没有变,所以这里还是需要改进一下,如果不改动,恐怕4K数据的时候作用还是不太明显 我这两天写了一个分支用 hash index 思想重写了cache 试了一下,速度已经是 O(1) 了 4000个记录,查找任意一个,我这个人肉计时器都感受不到任何延迟,从1 到 4000 都很快能索引出来 表现非常优秀 但是,可是,BUT 构建索引的速度实在太慢了,4000个记录,居然要5分钟,忍不了, 我看看到底是谁花了5分钟,太过分了 |
Beta Was this translation helpful? Give feedback.
-
Lines 1633 to 1638 in cea7a06 4000 条数据的时候,1635 这一句执行了3分50秒 左右,构建hash执行了1分15秒 左右 |
Beta Was this translation helpful? Give feedback.
-
Test case 安排了一下
200 条记录
关闭HASH以后,测试日志如下
效果还行 |
Beta Was this translation helpful? Give feedback.
-
我用的是 ESP32 做的实验 Lines 1478 to 1490 in 44a414e 如果将上面的 1481 注释掉以后,初始化时间减少到 2 秒,说明主要问题还是 hash index 构建上 所以我简单的找了一下, 考虑到 hash 算法的特性,我觉得将 hash 存入 flash 的性价比有点低,主要是
现在有两个办法
你能信,我把hash算法改了一下,现在初始化速度降到了 当当当(音效) 3秒 5000条数据 3秒 启动太完美了 |
Beta Was this translation helpful? Give feedback.
-
当前版本在 fal_cfg.h 通过定义 FAL_PART_TABLE 来定义 partition
但是,我在使用 Nodemcu(ESP32) 的时候 NodeMCU 是通过 partitions.csv 来定义分区的,如果要正常使用 flashdb
有两个途经,
我个人认为 2 是更好的方法,可以适用更多的系统
所以,我建议给 FAL 增加动态初始化 FAL_PART_TABLE 的能力,我觉得这个改动也不大
Beta Was this translation helpful? Give feedback.
All reactions