直接返回数组的方法是最慢的

  •   2009-07-31/22:45
  • 缓存文件,大家用的最多的估计就是 return array();

    实验证明,这种方法是较慢的,试考查以下的3个文件.

    其一. $arr.php 直接返回 数组

    <?php
    return Array
    (
        "db_host1" => 123,
        "db_host2" => 123,
        "db_host3" => 123,
        "db_host4" => 123,
        "db_host5" => 123,
        "db_host6" => 123,
        "db_host7" => 123,
        "db_host8" => 123,
        "db_host9" => 123,
        "db_host10" => 123,
        "db_host11" => 123,
        "db_host12" => 123,
        "db_host13" => 123,
        "db_host14" => 123,
        "db_host15" => 123,
        "db_host16" => 123
    );
    ?>

    其二,  ini.php 为INI文件

    <?php exit;?>
    db_host1 =123
    db_host2 =123
    db_host3 =123
    db_host4 =123
    db_host5 =123
    db_host6 =123
    db_host7 =123
    db_host8 =123
    db_host9 =123
    db_host10 =123
    db_host11 =123
    db_host12 =123
    db_host13 =123
    db_host14 =123
    db_host15 =123
    db_host16 =123
    其三,str.php 为序例化后的数组

    <?php
    return
    'a:16:{s:8:"db_host1";s:3:"123";s:8:"db_host2";s:3:"123";s:8:"db_host3";s:3:"123";s:8:"db_host4";s:3:"123";s:8:"db_host5";s:3:"123";s:8:"db_host6";s:3:"123";s:8:"db_host7";s:3:"123";s:8:"db_host8";s:3:"123";s:8:"db_host9";s:3:"123";s:9:"db_host10";s:3:"123";s:9:"db_host11";s:3:"123";s:9:"db_host12";s:3:"123";s:9:"db_host13";s:3:"123";s:9:"db_host14";s:3:"123";s:9:"db_host15";s:3:"123";s:9:"db_host16";s:3:"123";}';
    ?>

    分别对3个文件  进行10000次包含返回数组测试

    $t1 = microtime(true);

    $file1 = './arr.php';
    $file2 = './ini.php';
    $file3 = './str.php';

    for($i=0; $i<10000; $i++){
    //$arr  = require $file1;
    //$arr  = parse_ini_file($file2);
    $arr  = unserialize(require $file3);
    }

    $t2 = microtime(true);
    echo $t2-$t1;

    得出结果:

    arr.php       5.7820551395416

    ini.php        5.3364160060883

    str.php        5.5691919326782

    其中,排得最快的居然是 INI文件.

    其次是序列化, 最慢的是直接 return 数组

    结论:

       ini 文件不错,方便书写(可以考虑)

       保存数组, 用序列化!


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多