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一些公用函数的集合
Mar 27 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
PHP校验15位和18位身份证号的类封装
Nov 07 PHP
PHP _construct()函数讲解
Feb 03 PHP
YII框架行为behaviors用法示例
Apr 26 PHP
PHP实现常用排序算法的方法
Feb 05 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
读书月活动方案
2014/05/22 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
大学生逃课检讨书
2015/05/04 职场文书
新员工入职感想
2015/08/07 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android