文件复制函数的效率比较 分类: H_HISTORY 2013-02-17 21:20 845人阅读 评论(1) 收藏
2013-02-17 21:20
453 查看
使用read, write, scanf, printf等系统调用或库函数,可以实现简单的文件复制程序,但效率上有明显差别。
方法一:逐个字符读入并输出
[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再输出
[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
方法一:逐个字符读入并输出
#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); }执行效率:
[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 1024 int 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); }执行效率:
[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
相关文章推荐
- 使用C语言读取properties文件V1.0 分类: H_HISTORY 2013-02-26 12:37 946人阅读 评论(0) 收藏
- return 与 exit()的区别--return退出本函数,exit()退出整个程序 分类: H_HISTORY 2013-02-03 19:44 367人阅读 评论(0) 收藏
- #小练习 从多个文件中提取电话号码 分类: python 小练习 正则表达式 2013-05-28 15:40 442人阅读 评论(0) 收藏
- 善用VS中的Code Snippet来提高开发效率 分类: C# 2015-01-22 11:06 69人阅读 评论(0) 收藏
- 文件操作注意事项 分类: python 小练习 python基础学习 open()文件读写 2013-12-03 11:05 532人阅读 评论(0) 收藏
- Remove Duplicates from Sorted Array II 分类: Leetcode(线性表) 2015-03-25 21:20 40人阅读 评论(0) 收藏
- 过滤驱动加密文件(代码) 分类: windows驱动程序WDM 2013-09-25 14:40 611人阅读 评论(0) 收藏
- Linux中fork()函数详解 分类: Ubuntu学习笔记 2015-07-27 13:56 9人阅读 评论(0) 收藏
- ffmpeg结构体以及函数介绍(二) 分类: ffmpeg-SDL-VLC-Live555 2013-08-22 18:03 451人阅读 评论(0) 收藏
- HDFS读取文件步骤 分类: hadoop 2015-05-27 22:08 116人阅读 评论(0) 收藏
- 从PCI上读取数据 线程和定时器效率 分类: 浅谈PCI arm-linux-Ubuntu 2013-08-07 08:18 740人阅读 评论(0) 收藏
- JFFS2 文件系统及新特性介绍 分类: arm-linux-Ubuntu 2013-07-22 16:30 269人阅读 评论(0) 收藏
- 利用SecureCRT上传、下载文件(使用sz与rz命令) 分类: ubuntu 2013-04-23 10:39 231人阅读 评论(0) 收藏
- 连接ACCESS 数据库不能使用 '';文件已在使用中。 分类: 错误积累 2012-03-12 09:09 4755人阅读 评论(0) 收藏
- 常用文件操作 分类: C# 2014-10-14 16:18 108人阅读 评论(0) 收藏
- Android - 文件读写操作 总结 分类: Android 2015-07-20 18:01 4人阅读 评论(0) 收藏
- PCI设备内存操作函数总结 分类: 浅谈PCI 2014-05-26 17:48 580人阅读 评论(0) 收藏
- winfrom 操作 INI 文件 分类: WinForm 2014-07-22 12:49 156人阅读 评论(0) 收藏
- javascript中函数声明和函数表达式的区别 分类: JavaScript 2015-05-07 21:41 897人阅读 评论(0) 收藏
- fileinput模块获取文件的总行数 分类: python 小练习 python Module 2013-12-04 18:19 304人阅读 评论(0) 收藏