博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 分割字串 Function 的速度比較(substr/sscanf/preg_match)---substr最快!
阅读量:7098 次
发布时间:2019-06-28

本文共 802 字,大约阅读时间需要 2 分钟。

固定長度的字串(假設是 06481a63041b578d702f159f520847f8), 要照固定格式做切割, 使用 PHP 要怎麼切會比較快?

註: 要將此字串切成 => 06 / 48 / 1a63041b578d702f159f520847f8 這三個字串.

 

寫簡單的程式做個測試, 來比較  /  /  的速度.

先設 $a = '06481a63041b578d702f159f520847f8';, 再執行下面程式做測試(全部都跑 100萬次的數據):

  • 使用 substr 程式執行花 4.08482551575 秒:

    $x[0] = substr($a, 0, 2);

    $x[1] = substr($a, 2, 2);
    $x[2] = substr($a, 4, 28);

  • 使用 sscanf 程式執行花 5.26213645935 秒 (與 substr 差 -5.26213645935)

    list($x[0], $x[1], $x[2]) = sscanf($a, '%2s%2s%28s');

    註: $x = sscanf($a, '%2s%2s%28s'); // 耗費時間增加到 8秒, 會比 preg_match 更慢.

  • 使用 preg_match 程式執行花 7.58504867554 秒 (與 substr 差: -7.58504867554)

    preg_match('/^(\w{2})(\w{2})(\w{28})$/', $a, $match);

    $x[0] = $match[1];
    $x[1] = $match[2];
    $x[2] = $match[3];

結論, substr() 大獲全勝, 還是不要懶惰, 雖然要寫比較多行, 但是速度會快不少.

转载于:https://www.cnblogs.com/kenshinobiy/p/4424421.html

你可能感兴趣的文章
swift 纯代码自定义控件
查看>>
使用Groovy的sql模块操作mysql进行多种查询
查看>>
解决mysql 主从数据库同步不一致的方法
查看>>
字符编码笔记:ASCII,Unicode 和 UTF-8
查看>>
Stack
查看>>
[BZOJ3631][JLOI2014]松鼠的新家(树链剖分)
查看>>
libgdx游戏引擎开发笔记(四)文字显示BitmapFont
查看>>
JavaScript和Webservice实现联动
查看>>
CSC
查看>>
pycharm 配置 anaconda ,以及anaconda的使用
查看>>
终端命令和环境变量
查看>>
Android 如何从系统图库中选择图片
查看>>
Tomcat容器,Servlet容器,Spring容器的包含关系
查看>>
java----数据结构与算法----JavaAPI:java.util.LinkedList、ArrayList、Vector/Stack
查看>>
九章算法系列(#4 Dynamic Programming)-课堂笔记
查看>>
3月18日 全部练习题(二)
查看>>
Java synchronized详解
查看>>
Frameset使用教程
查看>>
局域网与internet
查看>>
request
查看>>