PHP字符串单字气节作――substr真的好慢
PHP字符串单字节操作――substr真的好慢
当我们要操作字符串中的某一个单字节时,我们该使用什么样的方式操作?一直以为,substr函数不会很慢。但今天测试了一下,结果并非如此。以下是测试代码:
?
<?php $str='abcdefghijklmnopqrstuvwxyz1234567890'; error_reporting(E_ALL); /** * Simple function to replicate PHP 5 behaviour */ function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } //使用substr函数 $start=microtime_float(); for ($k = 100; $k > 0; $k--) { for ($i=0;$i<strlen($str);$i++) echo substr($str,$i,1), ' '; } $end = microtime_float(); echo("<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> t i m e :" . round( $end - $start ,6) ."<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>"); //使用字节操作 $start=microtime_float(); for ($k = 100; $k > 0; $k--) { for ($i=0;$i<strlen($str);$i++) echo $str{$i}, ' '; } $end = microtime_float(); echo("<br/> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>t i m e :" . round( $end - $start ,6) ."<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>"); //使用数组模式操作 $start=microtime_float(); for ($k = 100; $k > 0; $k--) { for ($i=0;$i<strlen($str);$i++) echo $str[$i], ' '; } $end = microtime_float(); echo("<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> t i m e :" . round( $end - $start ,6) ."<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>"); ?>
?以下是测试结果:
t i m e :0.003782
t i m e :0.002862
t i m e :0.002587
t i m e :0.00351
t i m e :0.002649
t i m e :0.002786
由此可见,substr速度是很慢的。而字节操作与数组操作模式,则是同一级别的。由此我们认为,如果对字符串进行字节操作,则使用字节操作模式最好,因为,这一方式不会导致误以为变量类型是数组。
当然,这种操作方式有其局限性,那就是对于中文字串是无法这样处理的,你只有使用mb_substr!!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

float最大值:1、在C语言中,float最大值是3.40282347e+38,根据IEEE 754标准,float类型的最大指数为127,尾数的位数为23,通过这种方式,最大浮点数为3.40282347e+38;2、在Java语言中,float最大值是3.4028235E+38;3、在Python语言中,float最大值是1.7976931348623157e+308。

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

float精度能到6到9位小数。根据IEEE754标准,float类型可以表示的有效数字位数为大约6到9位。需要注意的是,这只是理论上的最大精度,实际使用中由于浮点数的舍入误差,float类型的精度往往会更低。在计算机中进行浮点数运算时,由于浮点数的精度限制,可能会出现精度损失的情况。为了提高浮点数的精度,可以使用更高精度的数据类型,如double或者long double。

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

C语言中的float是一种数据类型,用于表示单精度浮点数,浮点数是一种用科学计数法表示的实数,可以表示非常大或非常小的数值。float类型的变量可以存储小数点后6位有效数字的数值,在C语言中,使用float类型可以进行浮点数的运算和存储,其变量可以用于表示小数、分数、科学计数法等需要精确表示的实数,与整数类型不同,浮点数可以表示小数点后的数字,并且可以进行小数的四则运算。

常见的数据库float长度有:1、MySQL中的float类型长度,可以是4个字节或8个字节;2、Oracle中的float类型长度,可以是4个字节或8个字节;3、SQL Server中的float类型长度,固定为8个字节;4、PostgreSQL中的float类型长度,可以是4个字节或8个字节等等。
