php 判断字符串之间包含关系
之前常用stristr , strpos判断。
因为处理1000W * 1000W级别,循环就是漫长漫长...
在此,对stristr, strpos, explode判断字符串包含关系处理速度对比:
Header("Content-Type:text/html;charset=utf-8");
ini_set('memory_limit','-1');
set_time_limit(0);
$count = 10000000;//循环次数
$str1 = 'abcdef';
$str2 = 'abce';
$str3 = 'abc';
function str_is_include($str1, $str2){//strpos判断包含关系
if( strpos($str1, $str2) !== false ) return true;
else return false;
}
function str_is_include2($str1, $str2){//explode判断包含关系
$arr = explode($str2, $str1);
if(count($arr) > 0) return true;
else return false;
}
$q = time();
for($i=0; $i<$count; $i++){
if( strpos($str1, $str2)!== false ){}
if( strpos($str1, $str3) !== false ){}//此处小插曲; 本来str_is_include($str1,$str2)来判断。 但是输出strpos耗时:17秒 跟stristr同一个级别。 于是考虑循环内部不去取外部函数。省掉单独为函数开辟堆栈时间。1000W次就生下来了10秒。
} echo '循环strpos耗时:'.(time()-$q).'<br/>';
$w = time();
for($i=0; $i<$count; $i++){
stristr($str1, $str2);
stristr($str1, $str3);
}
echo '循环stristr耗时:'.(time()-$w).'<br/>';
$e = time();
for($i=0; $i<$count; $i++){
str_is_include2($str1, $str2);
str_is_include2($str1, $str3);
}
echo '循环explode耗时:'.(time()-$e); //////////////////////////////////////////////////////(秒)
循环strpos耗时:7
循环stristr耗时:17
循环explode耗时:29
strpos 胜出!!!
php 判断字符串之间包含关系的更多相关文章
- 用Shell判断字符串包含关系的方法小结
这篇文章主要给大家介绍了关于用Shell判断字符串包含关系的几种方法,其中包括利用grep查找.利用字符串运算符.利用通配符.利用case in 语句以及利用替换等方法,每个方法都给出了详细的示例代 ...
- 转 Shell判断字符串包含关系的几种方法
https://blog.csdn.net/rznice/article/details/71086839 Shell中判断字符串包含关系的方法: 1.通过grep来判断:12str1="a ...
- Shell判断字符串包含关系的几种方法
现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串 以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stac ...
- mysql 如何判断 "字符串" 是否为 "数字"
这个问题有点怪 ,但很多时候我们会以字符串的形式存储数字 , 反过来我们用字符串进行数学运算时, 好像也不会出错 . 除非 , 用作数学运算的字符串不能转换成数字 .但是我们改如何判断字符串是否能转换 ...
- Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数).这个办法是一个公司同事发现的,用起来很方便,但理解 ...
- java中数组、集合、字符串之间的转换,以及用加强for循环遍历
java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...
- JS中实现JSON对象和JSON字符串之间的相互转换
对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...
- Oracle中如何判断字符串是否全为数字
Oracle中如何判断字符串是否全为数字 学习了:http://www.cnblogs.com/zrcoffee/archive/2012/12/11/2812744.html 本文介绍了判断字符串是 ...
- Linux shell 判断字符串为空等常用命令
1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...
随机推荐
- (DP)To The Max --HDU -- 1081
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1081 这道题使用到的算法是:预处理+最大连续子串和 如果会做最大连续子串和,那么理解这题就相对简单一些, ...
- POJ2349 Arctic Network 2017-04-13 20:44 40人阅读 评论(0) 收藏
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19113 Accepted: 6023 D ...
- Centos 安装 erlang 环境
系统 Centos 6.5 64位 Erlang 18.3.4 安装依赖组件 yum install -y gcc gcc-g++ unixODBC unixODBC-devel wxBase wxG ...
- WPF 使用OCX控件速度很慢
最近公司项目,需要在wpf上面嵌入ocx控件,但是程序运行起来后,进行操作后,界面一直很卡,找了各种原因,没有找到原因,后来直接运行exe文件,速度顿时快了很多.
- Codeforces Beta Round #75 (Div. 1 Only) B. Queue 二分
B. Queue Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/problem/91/B Descrip ...
- ping使用
while read line do ip=`echo $line | awk '{print $2}' ` -i $ip ];then echo $line | tee -a b fi
- 552. Student Attendance Record II
Given a positive integer n, return the number of all possible attendance records with length n, whic ...
- python获取aliyun ECS实例
#!/usr/bin/env python #-*- coding:utf-8 -*- # Description : get ecs from aliyun # Author : quke # Da ...
- ElasticSearch安装拼音插件 elasticsearch-analysis-pinyin
elasticsearch-analysis-pinyin 是 ElasticSearch的拼音插件.强大的功能支持拼音等的搜索 1.下载源代码 源码地址https://github.com/medc ...
- sql注入实例详解(二)
前言 这篇文章就是一个最基本的SQl手工注入的过程了.基本上在sqlilabs上面的实验,如果知道了其中的全部知识点,都可以通过以下的步骤进行脱裤.下面的这个步骤也是其他的脱裤手段的基础.如果想要精通 ...