PHP 函数执行效率的小比较
PHP 函数执行效率的小比较
发布时间:2016-12-29 来源:查字典编辑
摘要:就是把原来的数组中的数都“拆”成“单”位的。下面是自己写的一个函数:复制代码代码如下:functionsplitStrToArray_min...

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

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

复制代码 代码如下:

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 <br />";

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

$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()

复制代码 代码如下:

<?php

$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

)

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类