好愚蠢的C程序啊!(也谈费时的文件打开与关闭)
今天看到自己以前在工程中写的一个程序,突然惊醒梦中人,哎,当时感觉还很不错呢,现在感觉好愚蠢啊. 原工程中涉及多文件,为了叙述简便,下面简化程序.
原来是这么写的:
#include <stdio.h>void saveData(int n)
{FILE *fp = fopen("data.txt", "a");fprintf(fp, "%d ", n);fclose(fp);
}int main()
{int i;for(i = 0; i < 10000; i++){saveData(1);}return 0;
}
saveData函数被大量调用到. 上面这个程序大概要运行5s. 而且每次跑一下程序后,data.txt中的数据都会累加,容易产生错误,只有用程序删除data.txt方可.
现在,看到上面这个程序,感觉好笑啊,修改如下:
#include <stdio.h>void saveData(FILE *fp, int n)
{fprintf(fp, "%d ", n);
}int main()
{FILE *fp = fopen("data.txt", "w");int i;for(i = 0; i < 1000000; i++){saveData(fp, 1);}fclose(fp);return 0;
}
或者:
#include <stdio.h>FILE *fp;void saveData(int n)
{fprintf(fp, "%d ", n);
}int main()
{fp = fopen("data.txt", "w");int i;for(i = 0; i < 1000000; i++){saveData(1);}fclose(fp);return 0;
}
修改后,即便循环次数为1000000次,程序也是眨眼之间就运行完了. 而且不会再每次跑程序时使data.txt中的数据累加,也就不需要删除data.txt文件.
难怪以前程序跑那么久呢,原来频繁地打开和关闭文件是如此地耗时!
好愚蠢的C程序啊!(也谈费时的文件打开与关闭)相关推荐
- 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...
近期我们在公众号后台.知乎.贴吧等平台,都收到了很多用户的关于阅读器使用上的一些问题咨询,比如如何设置屏保.如何安装字体.如何自定义笔记模板.如何去除PDF水印等. 今天,我们挑了10个大家最常咨询的 ...
- 我为什么做程序猿訪谈录
程序猿訪谈录(it3q.com),是我的第一个创业项目,选择这个方向是由于做这件事,有自己的兴趣,更有价值. 从事IT行业的群体,包含我自己,朋友和同事的印象大部分是一个IT屌丝,我周边的同事也以为我 ...
- 周鸿袆:从程序员创业谈起
离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题.由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一 ...
- 对话周鸿袆:从程序员创业谈起
离开雅虎中国后的周鸿袆现在的身份是IDG公司的投资合伙人,手中拿着五亿美金用来做风投的他自然对创业有着说不完的话题.由于周鸿袆出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一 ...
- 程序员面试谈薪资的6大技巧
程序员面试谈薪资的6大技巧 提起薪资,我们作为求职者都想多要点,作为程序开发者 更需要一个好的敲门,身怀绝技, 如果不会谈薪 ,那就不就亏大了吗? 原文来自程序人生: http://gad.qq.c ...
- 服务器不知别内存_程序优化浅谈服务器实现高并发的原理
我们每天刷手机都会接收到各种各样的信息,看到这篇文章时,不知大家有没有思考过,这些信息是如何组织,然后通过服务器发送给我们的呢? 其实也很简单,不就是一条一条请求嘛,服务器根据不同的请求分别去不同的数 ...
- 情感干货!和程序员(猿)谈恋爱,是一种什么体验呢?
我们以为程序员个个又宅又高冷,在他们面前,我们好像都是他们眼里"无知的人类",那和程序员们谈恋爱,到底是一种什么体验呢? 1.很宅,很二次元 我在上学的时候,见过很多情侣约会都是去 ...
- 从程序员创业谈起--对话周鸿祎
离开雅虎中国后的周鸿祎现在的身份是IDGVC的投资合伙人,做风险投资的他自然对创业有着说不完的话题.由于周鸿祎出身程序员,也一直是本刊的忠实读者,他希望一方面站在投资商的角度,同时以一种过来人的身份来 ...
- python语言源程序文件类型_浅谈Python的文件类型
Python的文件类型主要分为3种:源代码(source file).字节码(byte-code file).优化的字节码(optimized file).这些代码都可以直接运行,不需要编译或者连接. ...
最新文章
- 论文图片误用?AI:这条路已被我堵死了
- 第五章(5)Libgdx应用框架之线程
- 四周第四次课(1月5日) 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具...
- 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
- 从 wiscKey 看 LSMtree 的不足
- bios是固定在微型计算机上的一块RoM,计算机硬件笔试试题
- HTML5 装饰Canvas中图形
- ubuntun系统mysql数据库同步_Ubuntu下MySQL主从同步配置步骤
- 软件工程专业指导4(方法)
- linux区别sata和sas,SAS与SATA之间的异同分析
- Kubernetes部分Volume类型介绍及yaml示例
- class文件如何在linux下打开_Linux下文件的三个时间属性
- c int转字符串_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...
- Lattice的JTAG编程烧录
- 基于深度学习的银行卡号识别 卡号识别和分割
- 蔡学镛力荐,本人作品《Java虚拟机精讲》上市
- RSA/数字证书/签名原理详解
- 微信公众号发红包功能,现金红包、裂变红包接口
- MISC总结——隐写术(一)
- 快速翻译PDF文档的免费方法