在FAT32上截断()

时间:2015-03-26 11:27:07

标签: linux truncate fat32

当文件存在于ext3文件系统或FAT32文件系统上时,我注意到truncate()ftruncate()函数调用存在很大的性能差异。

该文件约为50 MiB。要从该文件中删除大约100字节的数据,我使用

ftruncate(file, fsize - num_bytes) 

它工作正常,但在FAT32文件系统上运行时性能更差:

 truncate on ext3      Time needed: 0.000030s
 truncate on FAT32     Time needed: 3.877204s

我已多次运行测试,结果总是相似。有时FAT结果甚至更差(~7s)。

我的问题是: FAT32对文件做了什么,需要这么长时间?

我的第一个假设是,它必须重写整个文件,但即使是该文件的生成/初始化也不需要这么长时间(~1.5s)。

我在64位Linux系统上运行它并使用以下代码编译:

$ gcc -std=c99 -O0 -g3 -pg -pedantic -Wall

0 个答案:

没有答案