哪一个更快/更好strcasecmp()或等于运算符?

时间:2012-03-28 10:26:00

标签: php

我必须比较两个字符串的大小写不敏感,一个是更快的strcasecmp()或等于operator

$str1='Hello';
$str2='hello';

//first approach 
if($str1 != strotolower($str2))
    //do some stuff here

//second approach 
if(strcasecmp($str1,$str2) !=0)
    //do some stuff here)

哪种方法更好/更快?

2 个答案:

答案 0 :(得分:7)

这两种方法的速度都是o(n)但是,使用strtolower会分配一个新的字符串来保存结果,从而增加内存压力并降低性能

答案 1 :(得分:2)

你可以试试这个:

    //*********************************
    $start1 = microtime(true);
    for ($i = 0; $i < 10000000; ++$i) {
        if (strcasecmp('STRING1', 'string1') == 0) {}
    }
    $end1 = microtime(true);
    echo 'Time1: ' . ($end1 - $start1) . '<br/>';
    //*********************************
    $start2 = microtime(true);
    for ($i = 0; $i < 10000000; ++$i) {
        if (strtolower('STRING1') == strtolower('string1')) {}
    }
    $end2 = microtime(true);
    echo 'Time2: ' . ($end2 - $start2) . '<br/>';
    //*********************************
    $start3 = microtime(true);
    for ($i = 0; $i < 10000000; ++$i) {
        if (strtolower('STRING1') == 'string1') {}
    }
    $end3 = microtime(true);
    echo 'Time3: ' . ($end3 - $start3) . '<br/>';
    //*********************************

结果:

  

时间1:2.8758139610291

     

时间2:4.6863219738007

     

时间3:2.5191688537598