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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
PHP比你想象的好得多
Nov 27 PHP
php生成shtml类用法实例
Dec 09 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
php实现的顺序线性表示例
May 04 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
15种PHP Encoder的比较
2007/03/06 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
整理Python中的赋值运算符
2015/05/13 Python
Python中有趣在__call__函数
2015/06/21 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
pandas DataFrame运算的实现
2020/06/14 Python
Pycharm中如何关掉python console
2020/10/27 Python
行政主管岗位职责
2013/11/18 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
公司薪酬管理制度
2014/01/31 职场文书
教学实验楼管理制度
2014/02/01 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
毕业大学生自荐信
2014/06/17 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
校长新学期致辞
2015/07/30 职场文书
公司管理建议书
2015/09/14 职场文书
python实现三次密码验证的示例
2021/04/29 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js