• isset !empty array_key_exists 厉害了我的哥


    The other responses focus on the differences between the two functions. This is true, but if the source array does not contain null or 0 or "", ... (empty values) values you can benchmark the speed of the two functions:

    <?php
    
    function makeRandomArray( $length ) {
        $array = array();
        for ($i = 0; $i < $length; $i++) {
            $array[$i] = rand(1, $length);
        }
    
        return $array;
    }
    
    function benchmark( $count, $function ) {
        $start = microtime(true);
        for ($i = 0; $i < $count; $i++) {
            $function();
        }
        return microtime(true) - $start;
    }
    
    $runs = 100000;
    $smallLength = 10;
    $small = makeRandomArray($smallLength);
    
    var_dump(benchmark($runs, function() {
        global $small, $smallLength;
        array_key_exists(rand(0, $smallLength), $small);
    }));
    var_dump(benchmark($runs, function() {
        global $small, $smallLength;
        !empty($small[rand(0, $smallLength)]);
    }));

    Which gave me the following results:

    For a small array:

    • array_key_exists: float(0.18357992172241)
    • empty: float(0.072798013687134)
    • isset: float(0.070242881774902)

    For a relative big array:

    • array_key_exists: float(0.57489585876465)
    • empty: float(0.0068421363830566)
    • isset: float(0.0069410800933838)

    So if it's possible it's faster to use empty or isset.
    -----------
    https://stackoverflow.com/questions/6884609/array-key-existskey-array-vs-emptyarraykey

  • 相关阅读:
    委托理解
    WebForm与MVC模式优缺点
    关系型数据库与NOSQL
    抽象类与接口
    Asp.net中的状态保持方案
    数据库[约束]笔记
    xml文件操作
    String、Path、File、Directroy 常用方法总结
    面向对象5个基本设计原则
    面向对象分析与设计
  • 原文地址:https://www.cnblogs.com/qinqiu/p/8574478.html
Copyright © 2020-2023  润新知