php嵌套循环太慢,php 大数组 foreach 循环嵌套的性能优化
前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒!
这麽慢,然后在代码中分块记录它的耗时时间, 发现是在 foreach 遍历的问题,嵌套数据量太大了, 我还嵌套了三层, 数据量大约为: 30*20000*20000;
额~ ~, 相乘起来数据量有点大了,怪不得会慢~
1、模拟场景, 优化前是这样的:
for($i=0; $i<30; $i++){
for($j=0; $j<20000; $j++){
for($k=0; $k<20000; $k++){
if($j == $k){
// TODO
}
}
}
}
2、 优化后:
for($i=0; $i<30; $i++){
$tempArr = array();
for($j=0; $j<20000; $j++){
$tempArr[$j] = $j;
}
for($k=0; $k<20000; $k++){ // isset 函数
if(isset($tempArr[$k])){
// TODO
}
}
// 用完即销毁临时数组
unset($tempArr);
}
将最里面的数组放出来,就把遍历数量拉低了, 再用isset()内置函数加快对比速度,效果是显著的, 优化后变成了2秒内;
来源:https://www.cnblogs.com/pyspang/p/12035177.html
php嵌套循环太慢,php 大数组 foreach 循环嵌套的性能优化相关推荐
- php大数组循环嵌套的性能优化
一.前言 博主最近在用elasticsearch做项目,查出来的数据都是数组,在筛选数据组装数据的时候,难免会碰到循环嵌套的问题.如果两个50000的数组循环嵌套,那实际运算则是50000*50000 ...
- PHP数组foreach循环
PHP数组foreach循环 定义数组: $array = ['name'=>'张三', 'age'=>18, 'sex'=>'男', '爱吃土']; 1.只读取值: foreach ...
- 取得数组下标_《零基础C++入门教程》——(8)搞定二维数组与循环嵌套
一.学习目标 了解二维数组的使用方法 了解循环嵌套的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<零基础看得懂的C语言入门教程>--(二) ...
- DevExpress ChartControl大数据加载时有哪些性能优化方法
DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...
- php foreach id是否存在数组_45个PHP程序性能优化的小技巧,赶紧收藏吧
在我们平常写代码的过程中,除了数据库的优化,针对与文件的优化,我们还需要对PHP执行优化. 在项目开发过程中,我们经常会遇到了一些PHP处理程序性能低下的情况,程序运行在centos+nginx环境, ...
- php数组,foreach循环合并数组,array_merge()的循环用法
比如我知道了三个一级分类的id,1,2,3 $arr1=array(1,2,3); 我要循环这三个分类,依次去数据库查询他们各自的子分类.结果是得到三个数组 现在想他所有子分类合并在一起.然后,再随机 ...
- oracle for循环遍历数组,foreach循环
Smarty foreach控制循环次数 1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$arra ...
- 《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套
一.学习目标 了解二维数组的使用方法 了解循环嵌套的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想了解编译原理和学习方法点这 ...
- 《零基础看得懂的C语言入门教程 》——(九)C语言二维数组与循环嵌套
一.学习目标 了解二维数组的使用方法 了解循环嵌套的使用方法 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习误区 第二篇:(二)C语言没那么难简单开发带你了 ...
最新文章
- 决策树模型回归可视化分析_【时间序列分析】在论文中用向量自回归(VAR)模型时应注意哪些问题?...
- 阿里如何实现100%容器化镜像化?八年技术演进之路回顾 1
- beta冲刺(1/7)
- 记录今天写的几个正则,数字范围的校验
- vlookup 2张表 显示na_【Excel 函数】Vlookup 正反向查询
- Java中Javadoc的{@link}与@see的简单区别
- ThinkPHP3.2.3执行页面循环案例代码(部分)
- bzoj4419 [Shoi2013]发微博 差分
- 子文件夹的权限统一于E盘的权限
- Repeater控件的
- 15. 从远程库克隆
- 10015---Nginx 常用命令
- 不礼让行人怎么抓拍的_注意啦!电子警察如何抓拍不礼让行人?所有司机都要看看...
- 【机器视觉】Halcon 18安装教程
- 视频截帧:javacv实现视频截帧功能
- TP-LINK TL-WDN7200H ubuntu驱动安装
- 【历史上的今天】1 月 20 日:Scala 问世;苹果低谷期的开始;专家系统之父诞生
- 百度网盘怎么分享文件(或加密或不加密)
- 无人配送“战斗员”新星,PIX助力创新企业逆讯发布智能物流机器人
- 三种方法解决动态换IP需求