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实现登陆验证码(类似条行码状)
Oct 09 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php读取文件内容到数组的方法
Mar 16 PHP
php实现通过ftp上传文件
Jun 19 PHP
php如何实现只替换一次或N次
Oct 29 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 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
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
python 实现音频叠加的示例
2020/10/29 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
见习期自我鉴定
2014/01/31 职场文书
市政管理求职信范文
2014/05/07 职场文书
2014年统计工作总结
2014/11/21 职场文书
主持人开幕词
2015/01/29 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python