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

时间: 2024-09-20 10:40:26

PHP 函数执行效率的小比较_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_

PHP下编码转换函数mb_convert_encoding与iconv的使用说明_php技巧

不过英文一般不会存在编码问题,只有中文数据才会有这个问题.比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码. mb_convert_encoding的用法见官方: http://cn.php.net/manual/zh/function.mb-convert-encoding.php 做一个GBK To UTF-8 复制代码 代码如下: <?php header(&qu

详解PHP执行定时任务的实现思路_php技巧

PHP本身是没有定时功能的,PHP也不能多线程.PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害. 一.Linux服务器上使用CronTab定时执行php 我们先从相对比较复杂的服务器执行php谈起.服务器上安装了php,就可以执行php文件,无论是否安装了nginx或Apache这样的服务器环境软件.而Linux中,使用命令行,用CronTab来定时任务,又是绝佳的选择,而且也是效率最高的选择. 首先,进入命令行模式.作为服务器的li

PHP一些有意思的小区别_php技巧

单引号'和双引号"的区别:  首先是单引号要比双引号执行效率要高,因为双引号会对内容进行预处理.  例如:'$value' 输出字符 $value ; "$value"输出变量$value的值.  char和varchar的区别:  char是定长而varchar是变长,char的主要特点是存储方式预分配,varchar当它的数据长度发生变化时会影响其存储的页分配.  char与varchar2是一对矛盾的统一体,两者是互补的关系.   varchar2比char节省空间,在

PHPWind与Discuz截取字符函数substrs与cutstr性能比较_php技巧

以掌握使用Benchmark_Iterate类工具的方法. 目录 一,什么是PEAR与Benchmark 二,性能比较代码准备与调试 三,性能比较测试结果 四,性能比较测试总结 五,附性能比较源代码下载 一,什么是PEAR与Benchmark 请参考PHP性能优化系列 第二期 PHP性能优化工具篇Benchmark类调试执行时间 第一期 PHP性能优化准备篇图解PEAR安装 二,性能比较代码准备与调试 测试环境说明 操作系统:Windows xp Service Pack 3 PHP版本:PHP

分析PHP中单双引号的误区和双引号小隐患_php技巧

许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些区别. 1.一般情况下两者是通用的.但如果双引号内写的是变量就会执行解析操作,而单引号则不解析,这个怎么说?还是举个例子吧. 这下看明白了吧! 2.执行效率不一样,单引号的执行速度要比双引号的执行速度快,如果是一样大型的程序,这方面还是要注意优化的,毕竟PHP属于解释型语言.所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如

PHP数学运算函数大汇总(经典值得收藏)_php技巧

本文汇总分析了PHP数学运算函数.分享给大家供大家参考,具体如下: 一.常用函数说明: Abs: 取得绝对值. Acos: 取得反余弦值. Asin: 取得反正弦值. Atan: 取得反正切值. Atan2: 计算二数的反正切值. base_convert: 转换数字的进位方式. BinDec: 二进位转成十进位. Ceil: 计算大于指定数的最小整数. Cos: 余弦计算. DecBin: 十进位转二进位. DecHex: 十进位转十六进位. DecOct: 十进位转八进位. Exp: 自然对

php json_encode()函数返回json数据实例代码_php技巧

json_encode()函数用法. echo json_encode(array('a'=>'bbbb','c'=>'ddddd'); 这样就会生成一个标准的json格式的数据 代码如下 <?php //需要执行的SQL语句 //单条 $sql="select id,name from tbl_user where id=1"; //多条数据 //$sql="select id,name from tbl_user"; //调用conn.php文

PHP sprintf() 函数的应用(定义和用法)_php技巧

语法 sprintf(format,arg1,arg2,arg++) 参数 描述 format 必需.转换格式. arg1 必需.规定插到 format 字符串中第一个 % 符号处的参数. arg2 可选.规定插到 format 字符串中第二个 % 符号处的参数. arg++ 可选.规定插到 format 字符串中第三.四等等 % 符号处的参数. 说明 参数 format 是转换的格式,以百分比符号 ("%") 开始到转换字符结束.下面的可能的 format 值:%% - 返回百分比符