我想在 rhel 6 平台上运行一个简单的磁盘性能测试。只是将 1G 字节写入磁盘。我发现如果文件首先被取消链接,它会比被截断快得多。大约是 1.5 秒对 15 秒。
为什么?我以为 unlink() 最后一个硬链接会将文件截断为 0 并删除 inode。为什么使用 unlink() 的 fwrite 比 truncate 更快?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
main(int argc, char* argv[])
{
if (argc < 2) {
return -1;
}
char buf[1024];
srand(time(0));
int i;
for (i = 0; i < 1024; ++i) {
buf[i] = rand();
}
/* unlink(argv[1]); */
FILE* fp = fopen(argv[1], "wb+");
if (fp == NULL) {
perror("fopen");
return -1;
}
for (i = 0; i < 1024 * 1024; ++i) {
if (fwrite(buf, 1024, 1, fp) != 1) {
perror("fwrite");
return -1;
}
}
return 0;
}