zoukankan      html  css  js  c++  java
  • PHP中测试in_array、isset、array_key_exists性能

    测试in_array、isset、array_key_exists性能。自己写的简易测试代码:

    ini_set('display_errors',true);
    error_reporting(E_ALL);
    date_default_timezone_set('PRC');
    
    function ttt($a,$b)
    {
        $u1 = $b[0]-$a[0];
        $u2 = $b[1]-$a[1];
    
        echo number_format($u1,8).'秒 '.$u2.'字节';
        echo '<br/>';
    }
    
    $t0 = [
        microtime(true),
        memory_get_usage()
    ];
    
    $arr1 = [];
    $arr2 = [];
    for ( $i=0; $i < 1000; $i++ )
    { 
        $arr1[] = 'a'.$i;
        $arr2['a'.$i] = true;
    }
    
    $k = 'a862';
    
    $t1 = [
        microtime(true),
        memory_get_usage()
    ];
    
    for ( $i=0; $i < 100; $i++ )
    { 
        in_array($k,$arr1);
    }
    
    $t2 = [
        microtime(true),
        memory_get_usage()
    ];
    
    for ( $i=0; $i < 100; $i++ )
    { 
        isset($arr2[$k]);
    }
    
    $t3 = [
        microtime(true),
        memory_get_usage()
    ];
    
    for ( $i=0; $i < 100; $i++ )
    { 
        array_key_exists($k,$arr2);
    }
    
    $t4 = [
        microtime(true),
        memory_get_usage()
    ];
    
    ttt($t1,$t2);
    ttt($t2,$t3);
    ttt($t3,$t4);

    我的电脑中输出的结果:

    0.01480007秒 328字节
    0.00003886秒 328字节
    0.00008416秒 328字节

    粗率来看使用isset最好,in_array比array_key_exists消耗更多的时间。

    如果在数据量比较下的情况下这三者的情况基本接近,但是仍然isset是最快的。

    因而在设计NILCMS的时候要考虑这方面的问题。铭记。

  • 相关阅读:
    图书管理系统登录界面
    图书管理系统的管理者界面
    图书管理系统-servlet层
    图书管理系统的dao层
    Linux 内核优化
    第十一章 Nginx之服务代理
    第十章 Nginx之LNMP拆分
    第九章 Nginx之LNMP架构
    第八章 Nginx常用模块
    第七章 WEB服务之Nginx
  • 原文地址:https://www.cnblogs.com/osfipin/p/7574734.html
Copyright © 2011-2022 走看看