gpt4 book ai didi

c - Fatfs 在包含许多文件的目录中显着变慢

转载 作者:行者123 更新时间:2023-12-04 01:51:31 25 4
gpt4 key购买 nike

我有一个在 STM32F7 上运行的数据记录系统,它使用 ChaN 的 FatFs 将数据存储到 SD 卡中: http://elm-chan.org/fsw/ff/00index_e.html

每组新数据都存储在带有目录的单独文件中。在设备上进行后处理期间,每个文件都会被读取然后删除。在一个包含 5000 个文件的目录中测试打开、读取、删除序列后,我发现我扫描的目录越远,速度越慢。

一开始这个循环大约需要 100-200 毫秒,2000 个文件,现在需要 700 毫秒。有没有更快的存储、读取、删除数据的方法?或配置 FatFs?

编辑:抱歉应该指定,我使用 FAT32 作为 FAT 文件系统

f_opendir(&directory, "log");
while(1) {
f_readdir(&directory, &fInfo);
if(fInfo.fname[0] == 0) {
//end of the directory
break;
}

if(fInfo.fname[0] == '.') {
//ignore the dot entries
continue;
}

if(fInfo.fattrib & AM_DIR) {
//its a directory (shouldnt be here), ignore it
continue;
}

sprintf(path, "log/%s", fInfo.fname);
f_open(&file, path, FA_READ);
f_read(&file, rBuf, btr, &br);
f_close(&file);

//process data...

f_unlink(path); //delete after processing
}

最佳答案

您可以通过将文件拆分到多个目录中来缩短目录链(只需为每 500 个左右的文件创建一个新的子目录即可)。这可以使访问特定文件的速度大大加快,因为要走的链平均变得更短。 (这只是假设您不是在搜索具有特定名称的文件,而是按照文件的创建顺序处理文件 - 在这种情况下,搜索算法可以非常简单)。

除此之外,没有太大希望获得更快的简单 FAT 文件系统。这是旧 FAT 技术的主要问题。

关于c - Fatfs 在包含许多文件的目录中显着变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com