php 高性能书写

 更新时间:2010年12月11日 22:50:10   作者:  
从这里就可以看到,第二段代码会因应数组中的键的个数去不停地作出判断次数为1+2+3的判断,所以变成了第一段代码判断次数是3,而第二段代码判断次数是6次
从.NET转去做PHP4年了,最近开始追求高性能了~~
所以开始觉得是时候要写写博客了~
来段发现物先~
复制代码 代码如下:

$arr = array(
'attr1' => 1 ,
'attr2' => 1 ,
'attr3' => 1 ,
);
$startTime = microtime( true );
for( $i = 0 ; $i < 1000 ; $i++ )
{
if( isset( $arr['attr1'] ) )
{

}
if( isset( $arr['attr2'] ) )
{

}
if( isset( $arr['attr3'] ) )
{

}
}
$endTime = microtime( true );
printf( "%d us.\n" , ( $endTime - $startTime ) * 1000000 );
$startTime = microtime( true );
for( $i = 0 ; $i < 1000 ; $i++ )
{
foreach( $arr as $key => $value )
{
switch( $key )
{
case 'attr1':
break;
case 'attr2':
break;
case 'attr3':
break;
}
}
}
$endTime = microtime( true );
printf( "%d us.\n" , ( $endTime - $startTime ) * 1000000 );

上面一段代码
输出结果是
us.
us.
然而,怎么看都是第一段比第二段繁琐,而且结构没有第二段清晰,
那么为什么第一段会比第二段执行快了这么多呢
我们可以看到第一段的代码中,只有3个if,
那么第二段会有多少个呢。
我们拆开了switch这个东西,可以去看看他的基本实现原理。
如果switch中,每一段case中都是使用break;结束的话,
其实这个switch好比多个if{}else if{}

所以从这个机制,我们就可以把的
复制代码 代码如下:

foreach( $arr as $key => $value )
{
switch( $key )
{
case 'attr1':
break;
case 'attr2':
break;
case 'attr3':
break;
}
}

转换成
复制代码 代码如下:

foreach( $arr as $key => $value )
{
if( $key == 'attr1' )
{

}
else if( $key == 'attr2' )
{

}
else if( $key == 'attr3' )
{

}
}


去理解,
从这里就可以看到,第二段代码会因应数组中的键的个数去不停地作出判断次数为1+2+3的判断,所以变成了第一段代码判断次数是3,而第二段代码判断次数是6次


所以就导致了执行效率相差了接近一倍的速度。
您可能感兴趣的文章:

相关文章

  • PHP远程连接oracle数据库操作实现方法图文详解

    PHP远程连接oracle数据库操作实现方法图文详解

    这篇文章主要介绍了PHP远程连接oracle数据库操作实现方法,结合图文形式详细分析了php连接Oracle数据库的相关配置、实现方法、遇到的问题、解决方法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • php中time()与$_SERVER[REQUEST_TIME]用法区别

    php中time()与$_SERVER[REQUEST_TIME]用法区别

    这篇文章主要介绍了php中time()与$_SERVER[REQUEST_TIME]用法区别,详细分析了time()与$_SERVER[REQUEST_TIME]的用法,并以实例形式对比总结了二者在获取当前系统时间戳与请求时间戳的区别,需要的朋友可以参考下
    2014-11-11
  • 教你如何快捷的使用cmd访问mysql小技巧

    教你如何快捷的使用cmd访问mysql小技巧

    平时我们如果想用cmd访问mysql数据库,需要先一步步进入到mysql的目录下,才能执行MYSQL命令,进行操作,下面介绍一种直接在cmd中执行mysql命令的方法,大赞!
    2014-05-05
  • PHP中加密解密函数与DES加密解密实例

    PHP中加密解密函数与DES加密解密实例

    这篇文章主要介绍了PHP中加密解密函数与DES加密解密,以实例形式分析了常用的PHP加密解密算法encrypt与DES加密解密的原理及应用方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • php实现俄罗斯乘法实例

    php实现俄罗斯乘法实例

    这篇文章主要介绍了php实现俄罗斯乘法,实例分析了俄罗斯乘法的原理与代码实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php以fastCGI的方式运行时文件系统权限问题及解决方法

    php以fastCGI的方式运行时文件系统权限问题及解决方法

    在IIS7.0上以FastCGI方式配置好PHP运行环境,测试可以正常运行PHP程序后,将PHP程序部署上去,导入程序原来的数据和配置信息。很快就有问题出来啦下面我们就详细记录下。
    2015-05-05
  • centos7环境下swoole1.9的安装与HttpServer的使用方法分析

    centos7环境下swoole1.9的安装与HttpServer的使用方法分析

    这篇文章主要介绍了centos7环境下swoole1.9的安装与HttpServer的使用方法,结合实例形式分析了centos7环境下swoole1.9的安装、配置方法以及HttpServer的相关使用技巧,需要的朋友可以参考下
    2020-03-03
  • php计数排序算法的实现代码(附四个实例代码)

    php计数排序算法的实现代码(附四个实例代码)

    计数排序(Counting sort)是一种根据小整数键对一组对象排序的算法;也就是说,它是一个整数排序算法。它通过计算具有不同键值的对象的数量,并对这些数量使用算术来确定输出序列中每个键值的位置
    2020-03-03
  • 11个PHP 分页脚本推荐

    11个PHP 分页脚本推荐

    Web开发中,分页设计必不可少。本文列举了10个PHP分页脚本,希望对你的web开发会有帮助。 列表中大部分,提供演示和代码下载。
    2011-08-08
  • PHP封装的MSSql操作类完整实例

    PHP封装的MSSql操作类完整实例

    这篇文章主要介绍了PHP封装的MSSql操作类,以完整实例形式分析了php封装的各种常用的mssql数据库的操作,包括针对mssql数据库的连接与增删改查等,需要的朋友可以参考下
    2016-05-05

最新评论