#include <stdio.h> #include <string.h> #include <fcntl.h> #include <errno.h> int main(int args, char **argv) { char file_name[255], file_name_use[255]; int fp; int num, num2, org_num; if (args != 3) return 0; memcpy(file_name, argv[1], strlen(argv[1])+1); org_num = num = atoi(argv[2]); num2 = num/1000; for (; num >= 0; num--) { if (num2 > 0) if ((num%num2) == 0) { printf("\rHas done %.2f%%", ((float)(org_num-num)/(float)org_num*100.0)); fflush(stdout); } sprintf(file_name_use, "%s_%d", file_name, num); if ((fp = open(file_name_use, O_RDWR | O_CREAT)) < 0) { fprintf(stderr, "Fail to creat %s\nError_Info: %s\n", file_name, strerror(errno)); return 0; } else { fchmod(fp, 0000644); write(fp, file_name_use, strlen(file_name_use)); close(fp); } } printf("\nAll files have been created\n"); return 0; } cc -O 2 file_create.c $ time ./a.out /tmp/test/test 50000 Has done 100.00% All files have been created real 0m46.980s user 0m0.101s sys 0m2.458s FreeBSD mybsd 7.0-RELEASE-p7 FreeBSD 7.0-RELEASE-p7 #0: Sun Dec 21 12:33:45 UTC 2008 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386 % time ./a.out /tmp/test/test 50000 Has done 100.00% All files have been created 0.096u 2.525s 0:47.98 5.4% 5+1163k 0+102053io 0pf+0w % time ./a.out /tmp/test/test 50000 Has done 100.00% All files have been created 0.083u 2.558s 0:48.01 5.4% 5+1137k 0+102053io 0pf+0w cc -v Using built-in specs. Target: i386-undermydesk-freebsd Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 4.2.1 20070719 [FreeBSD] gentoo linux 下 reiserfs 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/gvg-lvhome reiserfs 9.0G 7.6G 1.5G 85% /home time ./test /home/axlrose/temp/1/test_/test 50000 Has done 100.00% All files have been created real 0m6.604s user 0m0.095s sys 0m5.790s gcc --version gcc (Gentoo 4.3.2-r3 p1.6, pie-10.1.5) 4.3.2 Copyright © 2008 Free Software Foundation, Inc. 本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保; 包括没有适销性和某一专用目的下的适用性担保。 FreeBSD安装在80G的IDE硬盘上, gentoo安装在 250G的sata硬盘上, reiserfs v3 从新找到ide的lvm+reiserver v3 分区 $ time ./test /home/idelvdata/test/test 50000 Has done 100.00% All files have been created real 0m7.072s user 0m0.100s sys 0m6.222s 以上 idelvdata 为ide硬盘,测试结果看来跟 sata的差很少