zoukankan      html  css  js  c++  java
  • 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秒内;

  • 相关阅读:
    HTML5 JSDOM
    svn 基本操作
    Flex布局
    git上传布置代码 git优势
    jsonp, json区别
    require.js 模块化简单理解
    @vue/cli 3 安装搭建及 webpack 配置
    npm 常用命令 使用命令删除 node_modules 包
    package.json字段分析
    rem适配方案
  • 原文地址:https://www.cnblogs.com/pyspang/p/12035177.html
Copyright © 2011-2022 走看看