嘿啦_OpDfP 发表于 2019-1-11 15:52:57

请教下fatfs写数据耗时问题

f_open (&file,"0:/test.txt", FA_OPEN_APPEND | FA_WRITE)f_close(&file)

只执行文件的创建和关闭 耗时1ms

f_open (&file,"0:/test.txt", FA_OPEN_APPEND | FA_WRITE)
f_write(&file,buffer,sizeof(buffer),&bw)
f_close(&file)

执行文件创建和数据写入总耗时 14ms,f_wirte的执行时间1ms,14ms究竟是耗在哪里呢

嘿啦_OpDfP 发表于 2019-1-11 15:55:50

@eric2013   大神来这看下

eric2013 发表于 2019-1-11 16:00:20

推荐打开后不要关闭,

f_write和f_sync操作即可。

嘿啦_OpDfP 发表于 2019-1-11 16:06:19

eric2013 发表于 2019-1-11 16:00
推荐打开后不要关闭,

f_write和f_sync操作即可。

我测试过用f_close和f_sync耗时一样呀

eric2013 发表于 2019-1-11 16:09:24

嘿啦_OpDfP 发表于 2019-1-11 16:06
我测试过用f_close和f_sync耗时一样呀

这种耗时在你做批量读写的时候才会发挥优势。

单单一个f_open和f_close随着你不断的写入,打开一个文件都非常耗时间。

你现在做一个这样的测试,测试1万次。

单独计数函数f_open,f_write,f_close的时间变化。

novice 发表于 2019-1-11 16:21:21

因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_close时才真正写入磁盘。所以14ms耗在f_close里面。

嘿啦_OpDfP 发表于 2019-1-11 16:32:23

novice 发表于 2019-1-11 16:21
因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_c ...

那如果写入数据大于或者等于一个扇区的大小呢,耗时会怎样

嘿啦_OpDfP 发表于 2019-1-11 16:33:55

嘿啦_OpDfP 发表于 2019-1-11 16:32
那如果写入数据大于或者等于一个扇区的大小呢,耗时会怎样

用f_sync的话f_write会直接把数据写入磁盘吗

eric2013 发表于 2019-1-12 00:06:04

嘿啦_OpDfP 发表于 2019-1-11 16:33
用f_sync的话f_write会直接把数据写入磁盘吗

是的。

嘿啦_OpDfP 发表于 2019-1-13 23:33:32

eric2013 发表于 2019-1-12 00:06
是的。

那用f_sync结尾的话想再重新打开文件得在f_sync之后加f_close吗

eric2013 发表于 2019-1-14 00:39:39

嘿啦_OpDfP 发表于 2019-1-13 23:33
那用f_sync结尾的话想再重新打开文件得在f_sync之后加f_close吗

打开其他文件不影响这个。

嘿啦_OpDfP 发表于 2019-1-14 10:46:07

eric2013 发表于 2019-1-14 00:39
打开其他文件不影响这个。

请问下open为读模式,然后读N字节后下次还想追加读N字节,可以在读完之后以F_SYNC结尾吗

eric2013 发表于 2019-1-15 00:18:30

嘿啦_OpDfP 发表于 2019-1-14 10:46
请问下open为读模式,然后读N字节后下次还想追加读N字节,可以在读完之后以F_SYNC结尾吗
不可,要关闭后,打开写属性,这种问题,找个卡多溜溜。

blind3486329 发表于 2023-5-15 20:35:27

请问您解决了,我能问一下怎么解决的吗?

eric2013 发表于 2023-5-17 18:05:55

blind3486329 发表于 2023-5-15 20:35
请问您解决了,我能问一下怎么解决的吗?

用我回复的方法就可以。

回不去的时间 发表于 2023-5-22 22:19:04

novice 发表于 2019-1-11 16:21
因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_c ...

大佬能具体说说嘛

回不去的时间 发表于 2023-5-22 22:19:55

大佬们,FATFS写入多个文件速度很慢,如何解决呢

eric2013 发表于 2023-5-23 08:01:11

回不去的时间 发表于 2023-5-22 22:19
大佬们,FATFS写入多个文件速度很慢,如何解决呢

写入一个文件后,考虑卸载,重新加载一次。
页: [1]
查看完整版本: 请教下fatfs写数据耗时问题