请教下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究竟是耗在哪里呢
@eric2013 大神来这看下 推荐打开后不要关闭,
f_write和f_sync操作即可。 eric2013 发表于 2019-1-11 16:00
推荐打开后不要关闭,
f_write和f_sync操作即可。
我测试过用f_close和f_sync耗时一样呀 嘿啦_OpDfP 发表于 2019-1-11 16:06
我测试过用f_close和f_sync耗时一样呀
这种耗时在你做批量读写的时候才会发挥优势。
单单一个f_open和f_close随着你不断的写入,打开一个文件都非常耗时间。
你现在做一个这样的测试,测试1万次。
单独计数函数f_open,f_write,f_close的时间变化。 因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_close时才真正写入磁盘。所以14ms耗在f_close里面。 novice 发表于 2019-1-11 16:21
因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_c ...
那如果写入数据大于或者等于一个扇区的大小呢,耗时会怎样 嘿啦_OpDfP 发表于 2019-1-11 16:32
那如果写入数据大于或者等于一个扇区的大小呢,耗时会怎样
用f_sync的话f_write会直接把数据写入磁盘吗 嘿啦_OpDfP 发表于 2019-1-11 16:33
用f_sync的话f_write会直接把数据写入磁盘吗
是的。 eric2013 发表于 2019-1-12 00:06
是的。
那用f_sync结尾的话想再重新打开文件得在f_sync之后加f_close吗 嘿啦_OpDfP 发表于 2019-1-13 23:33
那用f_sync结尾的话想再重新打开文件得在f_sync之后加f_close吗
打开其他文件不影响这个。 eric2013 发表于 2019-1-14 00:39
打开其他文件不影响这个。
请问下open为读模式,然后读N字节后下次还想追加读N字节,可以在读完之后以F_SYNC结尾吗 嘿啦_OpDfP 发表于 2019-1-14 10:46
请问下open为读模式,然后读N字节后下次还想追加读N字节,可以在读完之后以F_SYNC结尾吗
不可,要关闭后,打开写属性,这种问题,找个卡多溜溜。 请问您解决了,我能问一下怎么解决的吗? blind3486329 发表于 2023-5-15 20:35
请问您解决了,我能问一下怎么解决的吗?
用我回复的方法就可以。 novice 发表于 2019-1-11 16:21
因为你写入的数据少于一个扇区大小,f_write把你写入的数据复制到内部缓冲区中并没有实际写入磁盘,当你f_c ...
大佬能具体说说嘛 大佬们,FATFS写入多个文件速度很慢,如何解决呢 回不去的时间 发表于 2023-5-22 22:19
大佬们,FATFS写入多个文件速度很慢,如何解决呢
写入一个文件后,考虑卸载,重新加载一次。
页:
[1]