php笔记之:有规律大文件的读取与写入的分析


Posted in PHP onApril 26, 2013

这几天在做一个东西.研究PHP读取行数较多的文件(大概上百万行).考虑到效率问题.进行了简单的研究.总结如下

第一条.file()函数的效率问题.

file()函数的效率很底下 如果是有规律的文件.比如每行一条相应数据.那么尽量不要是用file()函数

可以使用file_get_contents()然后用explode切割.这样效率会快三分之一

举个例子:

文件样式如下:

11111\n

22222\n

33333\n

44444\n

55555\n

.....\n

nnnnnnnnnnn\n

如果用file($file)读入的话.耗时很长.

可以用如下方法explode("\n",file_get_contents($file));效率会快很多.

第二条,数组的遍历方式.

数据已经被读入数组了.下面就是遍历了.

我所需要的是确定数组中有无一个值的存在,比如说44444是否在数组中.首先想到的是in_array()

不过实验了下发现效率很低下.于是参考别人的代码想到一个办法.把数组翻转过来.变成所有值都为1.原来的值变成了索引.那么只要我在if里写($arr[索引]==1)去判断.果然效率高出很多.

在数组的遍历过程中.如果数组个头非常大,并且数组中的数据并不是全能用到的话,最好把用来遍历的数组抽出来.这样会提高很多效率.

第三条,数组的存储.

把计算过后的数据保存起来.存在一个文件中.考虑了三种方法.一种是直接写成php文件.一种是serialize,一种是json串.

第一种方式

直接写入文件<?php 连接var_export($var)连接";"连接?>保存成PHP

需要的时候直接require进来.

第二种方式.把变量serialize然后file_put_contents()进入文件.使用的时候unserialize就ok.

第三种方式和第二种类似.只不过写成了json串.

经过测试.发现第二种效率最高.第三种其次.和第二种效率不相上下.第一种最慢.和我预想的差距很大.真是大跌眼镜.

PHP 相关文章推荐
火车头采集器3.0采集图文教程
Mar 17 PHP
php读取excel文件的简单实例
Aug 26 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP的反射机制实例详解
Mar 29 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
详解thinkphp的Auth类认证
May 28 PHP
php笔记之:文章中图片处理的使用
Apr 26 #PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 #PHP
input file获得文件根目录简单实现
Apr 26 #PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 #PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 #PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 #PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 #PHP
You might like
php的控制语句
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python求导数的方法
2015/05/09 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
python dlib人脸识别代码实例
2019/04/04 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
高中家长寄语
2014/04/02 职场文书
企业金融服务方案
2014/06/03 职场文书
学生检讨书范文
2015/01/27 职场文书
青岛海底世界导游词
2015/02/11 职场文书
毕业证明书
2015/06/19 职场文书
暂住证证明
2015/06/19 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
pandas取dataframe特定行列的实现方法
2021/05/24 Python