技术开发 频道

对PHP采集数据提取核心函数的速度测试与分析

  【IT168 技术】由于程序需要,于是对PHP采集中的字符提取的核心部分进行了执行速度的测试。

  测试了三种最常见的提取办法:

  方法一:

<?php
  require
"class.debug.php";
  
function getContent ( $sourceStr )
  {
  $content
= strstr( $sourceStr, '形' );
  $content = substr( $content, 0, strrpos( $content, '言' ) + strlen( '言' ) );
  return $content;
  }
  $sourceStr
= '拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论';
  $debug = new Debug;
  $debug
->startTimer();
  
for( $i = 0; $i < 1000000; $i++ )
  {
  $returnStr
= getContent( $sourceStr );
  }
  $timeInfo
= $debug->endTimer();
  echo $timeInfo;
  ?
>

  通过比较低级的字符操作函数进行提取.

  方法二:

 

<?php
  require
"class.debug.php";
  
function getContent ( $sourceStr )
  {
  $pattern
= "/形(.*?)言/is";
  preg_match_all( $pattern, $sourceStr, $result );
  return $result[
1][0];
  }
  $sourceStr
= '拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论';
  $debug = new Debug;
  $debug
->startTimer();
  
for( $i = 0; $i < 1000000; $i++ )
  {
  $returnStr
= getContent( $sourceStr );
  }
  $timeInfo
= $debug->endTimer();
  echo $timeInfo;
  ?
>

  使用一个简单的正则来提取.

  方法三:

<?php  
  require
"class.debug.php";
  
function getContent ( $sourceStr )
  {
  $content
= explode( '形', $sourceStr );
  $content = explode( '言', $content[1] );
  return $content[0];
  }
  $sourceStr
= '拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论';
  $debug = new Debug;
  $debug
->startTimer();
  
for( $i = 0; $i < 1000000; $i++ )
  {
  $returnStr
= getContent( $sourceStr );
  }
  $timeInfo
= $debug->endTimer();
  echo $timeInfo;
  ?
>

 

  通过两次explode分裂字符串来提取.

  测试前我的观点是: 1 > 2 > 3

0
相关文章