2017-02-03 4 views
1

シナリオ:これがFacebookや巨大なソーシャルネットワーキングサイトで、数百万回または何十億回も実行しなければならない場合、最も速い方法は何ですか?最初にフラッシュをトリミングする最速の方法は?

ここでは私のURLです:

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

私は、コードを使用する場合:

コードは、この表示されます
$new_url = $_SERVER["REQUEST_URI"]; 

が何であるかを

/profile?id=1/name=bob

を最も速いそれはこのようになりますので、最初のスラッシュを削除する方法(パフォーマンス):profile?id=1/name=bob

私はltrimtrim、またはsubstrまたはそれ以上を考えていましたか?おかげ

+1

この操作では、コードに__NO__のパフォーマンスの影響があることは間違いありません。 –

+0

@u_mulder申し訳ありません私の編集を参照してください – pixie123

+1

あなた自身をテストし、 'microtime'を使って違いを見ることができます。 –

答えて

1

最速でsubstrltrimsubstr、およびpreg_replaceで試験したとき。ここに私がそれをテストしたURLは次のとおりです。最速の最も遅いへtest.php?osd/lskdifo/idlola

注文:

  1. substr 0.018708944320679
  2. ltrim 0.021075963973999
  3. preg_replace 0.049320220947266

ここではテストです:

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; 

?> 
0

のようなパフォーマンスの違いがあることはありません、あなたがacheiveするSUBSTRを使用することができ、それ

substr($string, 1); 
関連する問題