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中使用数组实现堆栈数据结构的代码
Feb 05 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
php计算年龄精准到年月日
Nov 17 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php文件上传、下载和删除示例
Aug 28 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 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
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
28个JS验证函数收集
2010/03/02 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
调试Python程序代码的几种方法总结
2015/04/28 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
如何基于python实现不邻接植花
2020/05/01 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
公司清洁工岗位职责
2013/12/14 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
金融保险专业求职信
2014/09/03 职场文书
市场总监岗位职责
2015/02/11 职场文书
教师病假条范文
2015/08/17 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS