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 相关文章推荐
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php后门URL的防范
Nov 12 PHP
PHP连接access数据库
Mar 27 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
使用php实现从身份证中提取生日
May 09 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
thinkphp实现附件上传功能
May 26 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
JS实现留言板功能
2017/06/17 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
python 排列组合之itertools
2013/03/20 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
评析教师个人的自我评价
2014/02/19 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
法人代表证明书范本
2015/06/18 职场文书
学校团代会开幕词
2016/03/04 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书