php 执行效率,PHP 函数执行效率的小比较

就是把原来的数组中的数都“拆”成“单”位的。

下面是自己写的一个函数:

function splitstrtoarray_mine($array)

{

$new_array = array();

foreach($array as $value)

{

$value = (string)$value;

$len = strlen($value);

for($i = 0; $i < $len; $i ++){

array_push($new_array, $value{$i});

}

}

return $new_array;

}

测试了一下,还是可以执行的,如下调用:

//测试数组

$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12);

var_dump(splitstrtoarray_mine($data));

输出结果为:

array(18) {

[0]=>

string(1) "1"

[1]=>

string(1) "2"

[2]=>

string(1) "4"

[3]=>

string(1) "3"

[4]=>

string(1) "8"

[5]=>

string(1) "7"

[6]=>

string(1) "4"

[7]=>

string(1) "5"

[8]=>

string(1) "9"

[9]=>

string(1) "8"

[10]=>

string(1) "7"

[11]=>

string(1) "4"

[12]=>

string(1) "8"

[13]=>

string(1) "3"

[14]=>

string(1) "6"

[15]=>

string(1) "7"

[16]=>

string(1) "1"

[17]=>

string(1) "2"

}

虽然执行的不错,但是看看标准答案就会让你大吃一惊的,函数中就一句话,如下:

//标准函数

function splitstrtoarray($array)

{

return str_split(implode("", $array));

}

于是写了脚本来测试自己的和标准的函数的运行效率差距,里面有一个 microtime_float() 函数用来提供精确时间的支持:

//测量时间的函数

function microtime_float()

{

list($usec, $sec) = explode(" ", microtime());

return ((float)$usec + (float)$sec);

}

//自定义函数

function splitstrtoarray_mine($array)

{

$new_array = array();

foreach($array as $value)

{

$value = (string)$value;

$len = strlen($value);

for($i = 0; $i < $len; $i ++){

array_push($new_array, $value{$i});

}

}

return $new_array;

}

//标准函数

function splitstrtoarray($array)

{

return str_split(implode("", $array));

}

//测试数组

$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12);

//开始测试

$mine_start = microtime_float();

splitstrtoarray_mine($data);

$mine_end = microtime_float();

//标准函数调用

$sta_start = microtime_float();

splitstrtoarray($data);

$sta_end = microtime_float();

echo "自己的函数调用运行时间为:" . (float)($mine_end - $mine_start) . " s
";

echo "标准的函数调用运行时间为:" . (float)($sta_end - $sta_start) . " s
";

$multiple = (int)((float)($mine_end - $mine_start) / (float)($sta_end - $sta_start));

echo "前者是后者的:" . $multiple . " 倍!";

来看看输出结果:自己的函数调用运行时间为:9.3936920166e-005 s

标准的函数调用运行时间为:2.69412994385e-005 s

前者是后者的:3 倍!

多次刷新页面的话,可以发现标准函数的执行效率基本上是自己的函数的 3 倍!当然,标准的函数中使用了 php 的内置函数: str_split(),implode(),所以要比自己写函数快得多,对 str_split() 函数没有印象?来看看手册解释:

str_split -- convert a string to an array(将一个字符串转换成数组)

函数描述:array str_split ( string string [, int split_length] )

converts a string to an array. if the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length.

false is returned if split_length is less than 1. if the split_length length exceeds the length of string, the entire string is returned as the first (and only) array element.

例 1. example uses of str_split()

$str = "hello friend";

$arr1 = str_split($str);

$arr2 = str_split($str, 3);

print_r($arr1);

print_r($arr2);

?>

output may look like:

array

(

[0] => h

[1] => e

[2] => l

[3] => l

[4] => o

[5] =>

[6] => f

[7] => r

[8] => i

[9] => e

[10] => n

[11] => d

)

array

(

[0] => hel

[1] => lo

[2] => fri

[3] => end

)

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值