文件复制函数的效率比较
生活随笔
收集整理的這篇文章主要介紹了
文件复制函数的效率比较
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用read, write, scanf, printf等系統(tǒng)調(diào)用或庫(kù)函數(shù),可以實(shí)現(xiàn)簡(jiǎn)單的文件復(fù)制程序,但效率上有明顯差別。
方法一:逐個(gè)字符讀入并輸出
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h>int main(void){char c;int in, out;in=open("file.in", O_RDONLY);out=open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);while(read(in, &c, 1)==1){write(out, &c, 1);}exit(0); }執(zhí)行效率:
[lujinhong@lujinhong BeginningLinuxProgramming]$ TIMEFORAMT="" time ./a.out
0.31user 8.07system 0:08.40elapsed 99%CPU (0avgtext+0avgdata 1392maxresident)k
0inputs+9032outputs (0major+110minor)pagefaults 0swaps
方法二:每次讀入1K再輸出
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h>#define READ_SIZE 1024int main(void){char c[READ_SIZE];int in, out;int nread;in=open("file.in", O_RDONLY);out=open("file.out", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);while((nread=read(in, c, READ_SIZE))>0){write(out, c, nread);}exit(0); }執(zhí)行效率:
[lujinhong@lujinhong BeginningLinuxProgramming]$ TIMEFORAMT="" time ./a.out
0.00user 0.01system 0:00.01elapsed 92%CPU (0avgtext+0avgdata 1408maxresident)k
0inputs+9032outputs (0major+111minor)pagefaults 0swaps
總結(jié)
以上是生活随笔為你收集整理的文件复制函数的效率比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux系统调用相关概念
- 下一篇: errno的基本用法