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

对PHP采集数据提取核心函数的速度的测试与分析
由于程序需要,于是对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

时间: 2024-08-31 16:37:14

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

[置顶]C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel,是真尼玛的累,虽然那个时候C#还很菜,也想能不能通过程序来批量获取(所以平时想法要多才好).几经周折,终于发现了HtmlAgilityPack神器,这几年也用HtmlAgilityPack采集了很多类型数据,特别是足球赛事资料库的数据采集以及天气数据采集,都是使用HtmlAgilityPack,所以

基于PHP的简单采集数据入库程序_php实例

说到采集,无非就是远程获取信息->提取所需内容->分类存储->读取->展示 也算是简单"小偷程序"的加强版吧 下面是对应核心代码(别拿去做坏事哦^_^) 所要采集的内容是某游戏网站上的公告,如下图: 可先利用file_get_contents和简单正则获取基本页面信息 整理下基本信息,采集入库: <?php include_once("conn.php"); if($_GET['id']<=8&&$_GET['id

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的

测量-c# 使用线程采集数据只能采集一部分

问题描述 c# 使用线程采集数据只能采集一部分 我想用一个电机带动平台转动,然后平台上有个传感器采集数据,所以建立了2个线程,一个负责电机的驱动以及传感器的开关,另一个就是专门采集数据的.可是每次采集到的数据在20000多的时候就采集不了了.下面附上代码,我确实没想到原因,开始以为是延时的问题,后来在第二个线程开始加了1ms的延时,还是不行. //定义旋转所需时间 public static double PTime; //定义旋转所需脉冲.采样到的点数 public int ringpulse

jquery核心函数domManip详解

domManip是什么 dom即Dom元素,Manip是Manipulate的缩写,连在一起就是Dom操作的意思. .domManip()是jQuery DOM操作的核心函数 对封装的节点操作做了参数上的校正支持,与对应处理的调用 append.prepend.before.after.replaceWith appendTo.prependTo.insertBefore.insertAfter.replaceAll  节点的操作有几个重点的细节  保证最终操作的永远是dom元素,浏览器的最终A

网络数据包捕获函数库Libpcap安装与使用(非常强大)

1.Libpcap简介 Libpcap是Packet Capture Libray的英文缩写,即数据包捕获函数库.该库提供的C函数接口用于捕捉经过指定网络接口的数据包,该接口应该是被设为混杂模式.这个在原始套接子中有提到. 著名的软件TCPDUMP就是在Libpcap的基础上开发而成的.Libpcap提供的接口函数实现和封装了与数据包截获有关的过程. Libpcap提供了用户级别的网络数据包捕获接口,并充分考虑到应用程序的可移植性.Libpcap可以在绝大多数Linux平台上运行.在Window

asp msxml.xmlhttp采集数据并解决乱码问题

'在asp中要采集数据一般会利用了asp xmlhttp这个组件来实例了,很多时候采集过来的中文会是乱码,我们利用 bytestobstr函数转换解决了采集乱码的问题. function gethttppage(url) on error resume next dim http set http=server.createobject("msxml2.xmlhttp") http.open "get",url,false http.send() if http.r

SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易

目录 CLR 用户定义函数模式匹配数据提取模式存储匹配在匹配项中进行数据提取总结 尽管 T-SQL 对多数数据处理而言极其强大,但它对文本分析或操作所提供的支持却很少.尝试使用内置的字符串函数执行任何复杂的文本分析会导致难于调试和维护的庞大的函数和存储过程.有更好的办法吗?   实际上,正则表达式提供了更高效且更佳的解决方案.它在比较文本以便标识记录方面的益处显而易见,但是它的用途并不仅限于此.我们将介绍如何执行各种简单或令人惊异的任务,这些任务在 SQL Server 2000 中被视为不切实

基于DataHub采集数据的营销报告分析

         本案例是基于阿里云上的DataHub收集营销数据,并通过MaxCompute对营销数据进行分析.下面主要介绍如何用DataHub收集营销数据,以及在MaxCompute中如何对数据进行分析. 1 DataHub采集数据          阿里云的datahub提供了接口可将项目中产生的数据同步到Datahub中,并实时同步到MaxCompute项目对应的表中.下面介绍如何利用DataHub收集数据. 1.1 创建项目          DataHub地址为https://dat