文件操作
2015-08-30 23:34
218 查看
昨天写了个记录日志的程序,性能很差。要实现的功能是往日志中输入数据,当日志的文件大小大于某一个 值时,新建一个文件,并作为当前的日志文件。而我实现的过程是,每次往日志中写内容时都加锁,然后关闭当前 日志文件,获得当前日志文件的大小,并与约定的值作比较,如果大,就新建文件,如果小就重新打开当前文件并 在文件末尾添加内容,大致实现过程如下: TCriticalSection.enter; CloseFile(Textfile); handle := openfile(filename,nil); filesize :=getfilesize(handle); if filesize > maxsize then begin filename := NewFileName; AssignFile(Textfile,filename); Rewrite(textfile); end else begin AssignFile(Textfile,filename); Append(textfile); end; .......//writeLog; TCriticalSection.leave; 光看过程就知道这性能是很不好的,之后我对其进行了修改,新加了一个变量,用于记录文件的当前的大小。 实现的过程很简单: writelog(msg); iCurrentSize := iCurrentSize + Lenght(msg); 这样上面的代码就可以这样修改了: TCriticalSection.enter; if iCurrentSize > maxSize then begin CloseFile(Textfile); filename := NewFileName; AssignFile(Textfile,filename); Rewrite(textfile); iCurrentSize := 0; end .......//writeLog; TCriticalSection.leave; 两者改动对于日志来说区别不大,因为对时间要求不是特别严格。可是如果是对那种高精度,高效率的文 件输入就有很大影响了。同时我也想说,有很多时候,我们如果不能直接去得到结果,为什么不通过另外一条 途径呢?可能不直接得到的更快,更好。简单一点就是要勤于思考,懂得走弯路。
相关文章推荐
- 命令行小技巧:读取文件的不同方式
- 选定虚拟主机 性能凸显优势
- IE:临时文件保存法
- 文件的读出 编辑 管理
- 文件遍历排序函数
- 在线用表单建立文件夹
- VB获取文件大小的方法
- 文件、目录,文本文件等多种操作类
- 处理驱动器和文件夹
- 修改一行代码提升 Postgres 性能 100 倍
- 用vbs删除某些类型文件和磁盘空间报告的脚本
- Ruby实现批量对文件增加前缀代码分享
- C#获取文件夹及文件的大小与占用空间的方法
- delphi制作wav文件的方法
- PowerShell实现查询打开某个文件的默认应用程序
- 推荐Sql server一些常见性能问题的解决方法
- bat 文件 学习使用指南
- IIS配置文件隐患
- Shell中删除某些文件外所有文件的3个方法
- redis中修改配置文件中的端口号 密码方法