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 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
apache mysql php 源码编译使用方法
May 03 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 PHP
如何使用php生成zip压缩包
Apr 21 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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 callback函数使用方法和注意事项
2015/01/23 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
详解Python中的动态属性和特性
2018/04/07 Python
python多任务及返回值的处理方法
2019/01/22 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
简单了解python的内存管理机制
2019/07/08 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
中学生爱国演讲稿
2013/12/31 职场文书
党员自我对照检查材料
2014/08/19 职场文书
教师听课评语大全
2014/12/31 职场文书
财政局长个人总结
2015/03/04 职场文书
少先队工作总结2015
2015/05/13 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
毕业证明书
2015/06/19 职场文书
大学军训通讯稿
2015/07/18 职场文书
二胎满月酒致辞
2015/07/29 职场文书
宾馆安全管理制度
2015/08/06 职场文书
解析Redis Cluster原理
2021/06/21 Redis