手机
当前位置:查字典教程网 >编程开发 >php教程 >php 高性能书写
php 高性能书写
摘要:从.NET转去做PHP4年了,最近开始追求高性能了~~所以开始觉得是时候要写写博客了~来段发现物先~复制代码代码如下:$arr=array(...

从.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 高性能书写】相关文章:

PHP 高手之路(一)

PHP开启opcache提升代码性能

xml+php动态载入与分页

php实现简单的语法高亮函数实例分析

PHP CURL 多线程操作代码实例

php 字母大小写转换的方法

php实现读取内存顺序号

PHP 高手之路(二)

用 php 编写的日历

php动态函数调用方法

精品推荐
分类导航