php 计算字符串长度时间测试
2015-04-24 22:19
204 查看
<?php
$str = "adfa我是0 大大大adf \
";
echo strlen($str),"\n";
while (isset($str{++$i})) {
}
echo $i;
?>
下面是时间测试,不知道为什么每次都是下面一种方法要耗时少,反而strlen耗时多呢?
![](http://static.oschina.net/uploads/space/2012/0305/230002_2sCd_157781.png)
<?php
$str = "adfa我是0 大大大adf \
";
$start1=microtime(true);
for($a=0;$a<100000;$a++){
strlen($str);
}
echo microtime(true)-$start1,"\n";
$start2=microtime(true);
for($a=0;$a<100000;$a++){
while (isset($str{++$i})) {
}
}
echo microtime(true)-$start2,"\n";
?>
第二个测试里循环内$i没初始化, 只是遍历了一次,其他次数全部都是判断一下就直接跳出了,所以导致2性能比1好
?
这个有bug,空字符窜会返回1,最好改成
?
php生成字符窜的时候会把长度保存到str结构体的len字段上, 而php的strlen并不是遍历,只是取这个字段, 所以效率上绝对远远高过其他方式
首先, strlen() 是函数,而 isset() 是一种语言结构。
从源码上看, strlen()不做任何计算,只返回在 zval 结构中存储的一只字符串长度。函数调用会经过诸多步骤,如字母小写化、哈希查找。isset() 作为一种语言结构,意味着它的执行不需要字母小写化和哈希查找,也就是说,实际上在检验字符串长度的顶层代码中没花太多开销。
所以,在一些情况下,可以使用 isset() 代替 strlen() 来优化代码。
$str = "adfa我是0 大大大adf \
";
echo strlen($str),"\n";
while (isset($str{++$i})) {
}
echo $i;
?>
下面是时间测试,不知道为什么每次都是下面一种方法要耗时少,反而strlen耗时多呢?
![](http://static.oschina.net/uploads/space/2012/0305/230002_2sCd_157781.png)
<?php
$str = "adfa我是0 大大大adf \
";
$start1=microtime(true);
for($a=0;$a<100000;$a++){
strlen($str);
}
echo microtime(true)-$start1,"\n";
$start2=microtime(true);
for($a=0;$a<100000;$a++){
while (isset($str{++$i})) {
}
}
echo microtime(true)-$start2,"\n";
?>
第二个测试里循环内$i没初始化, 只是遍历了一次,其他次数全部都是判断一下就直接跳出了,所以导致2性能比1好
?
?
首先, strlen() 是函数,而 isset() 是一种语言结构。
从源码上看, strlen()不做任何计算,只返回在 zval 结构中存储的一只字符串长度。函数调用会经过诸多步骤,如字母小写化、哈希查找。isset() 作为一种语言结构,意味着它的执行不需要字母小写化和哈希查找,也就是说,实际上在检验字符串长度的顶层代码中没花太多开销。
所以,在一些情况下,可以使用 isset() 代替 strlen() 来优化代码。
相关文章推荐
- 字符串长度计算、截取、url参数获取、计算百分比、时间戳格式化
- PHP字符串长度计算 - strlen()函数使用介绍
- 【php】如何计算含有中文的字符串长度(中英文结合的字符串)
- PHP字符串长度计算 - strlen()函数
- Java,php,python,js 计算字符串长度和数组个数
- (实用篇)php中计算中文字符串长度、截取中文字符串的函数代码
- php中计算未知长度的字符串哪个字符出现的次数最多的代码
- php中计算中文字符串长度、截取中文字符串的函数代码
- PHP计算字符串的长度
- php中用strlen、mb_strlen函数计算中英文混排字符串长度
- PHP字符串长度计算 - strlen()函数使用介绍
- php中计算中文字符串长度、截取中文字符串
- PHP计算字符串长度函数
- php中计算中文字符串长度、截取中文字符串的函数代码
- php中计算中文字符串长度、截取中文字符串
- php中计算中文字符串长度、截取中文字符串的函数代码
- PHP不同字符集字符串长度的计算
- PHP字符串长度计算 - strlen()函数
- php 计算字符串长度
- PHP:计算字符串中汉字的个数、正确计算字符串的长度