当前位置: 网学 > 编程文档 > PHP > 正文

php 高性能书写

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/22

鉴于大家对PHP十分关注,我们编辑小组在此为大家搜集整理了“php 高性能书写”一文,供大家参考学习

从.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次


所以就导致了执行效率相差了接近一倍的速度。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号