php 高性能书写的解决办法

内容摘要
这篇文章主要为大家详细介绍了php 高性能书写的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!从.NET转去做PHP4年了,最近开始追
文章正文

这篇文章主要为大家详细介绍了php 高性能书写的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

从.NET转去做PHP4年了,最近开始追求高性能了~~所以开始觉得是时候要写写博客了~来段发现物先~

代码如下:

// php教程网 Www.512pic.com
$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 高性能书写的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!