场景:如果这是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
我在考虑ltrim
,trim
或substr
甚至更多?感谢
答案 0 :(得分:1)
使用substr
,ltrim
和substr
进行测试时,preg_replace
最快。以下是我测试过的网址:test.php?osd/lskdifo/idlola
从最快到最慢的顺序:
substr
0.018708944320679 ltrim
0.021075963973999 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;
?>
答案 1 :(得分:0)
因此不存在性能差异,您可以使用substr来实现它
substr( $string, 1 );