修剪第一次闪光的最快方法?

时间:2017-02-03 18:06:30

标签: php string performance url

场景:如果这是Facebook或一个庞大的社交网站,你每秒必须做数百万或数十亿次,那么最快的方法是什么?

这是我的网址:

http://www.example.com/profile?id=1/name=bob

如果我使用代码:

$new_url = $_SERVER["REQUEST_URI"];

该代码将显示:

/profile?id=1/name=bob

删除第一个正斜杠的最快方式(性能)是什么,所以它会是这样的:profile?id=1/name=bob

我在考虑ltrimtrimsubstr甚至更多?感谢

2 个答案:

答案 0 :(得分:1)

使用substrltrimsubstr进行测试时,preg_replace最快。以下是我测试过的网址:test.php?osd/lskdifo/idlola

从最快到最慢的顺序:

  1. substr 0.018708944320679
  2. ltrim 0.021075963973999
  3. preg_replace 0.049320220947266
  4. 以下是测试:

    <强> substr

    <?php
    
    $x = 0;
    $start = microtime(true);
    while ($x<=100000) {
        substr($_SERVER['REQUEST_URI'], 1);
        $x++;
    }
    $time_elapsed_secs = microtime(true) - $start;
    echo substr($_SERVER['REQUEST_URI'], 1);
    echo $time_elapsed_secs;
    
    ?>
    

    <强> ltrim

    <?php
    
    $x=0;
    $start = microtime(true);
    while ($x<=100000) {
        ltrim($_SERVER['REQUEST_URI'], '/');
        $x++;
    }
    $time_elapsed_secs = microtime(true) - $start;
    echo ltrim($_SERVER['REQUEST_URI'], '/');
    echo $time_elapsed_secs;
    
    ?>
    

    <强> preg_replace

    <?php
    
    $link = $_SERVER['REQUEST_URI'];
    $x=0;
    $start = microtime(true);
    while ($x<=100000) {
        preg_replace('/^\//', '', $link);
        $x++;
    }
    $time_elapsed_secs = microtime(true) - $start;
    echo preg_replace('/^\//', '', $link);
    echo $time_elapsed_secs;
    
    ?>
    

答案 1 :(得分:0)

因此不存在性能差异,您可以使用substr来实现它

substr( $string, 1 );