查看: 958|回复: 0

[PHP学习] 关于php几种字符串连接的效率比较(详解)

发表于 2017-12-13 08:00:02

php大致有三种字符串连接:

1、直接用.来进行连接。

2、用.=进行连接。

3、先压入数组,再通过join函数连接。

下面分别对这三种方法的效率进行测试:

第一种方法代码如下:

  1. <?php
  2. function get_tm() {
  3. list ( $usec, $sec ) = explode ( " ", microtime () );
  4. return (( float ) $usec + ( float ) $sec);
  5. }
  6. $temp="test";
  7. $result="";
  8. define("num",100000);
  9. $start=get_tm();
  10. for($i=0;$i<num;$i++)
  11. {
  12. $result=$result.$temp;
  13. }
  14. echo get_tm()-$start;
  15. ?>
复制代码

运行4次,除去第一次运行时间,三次时间分别为:

22.165272951126
22.003527164459
22.15947508812

第二种方法代码如下:

  1. <?php
  2. function get_tm() {
  3. list ( $usec, $sec ) = explode ( " ", microtime () );
  4. return (( float ) $usec + ( float ) $sec);
  5. }
  6. $temp="test";
  7. $result="";
  8. define("num",100000);
  9. $start=get_tm();
  10. for($i=0;$i<num;$i++)
  11. {
  12. $result.=$temp;
  13. }
  14. echo get_tm()-$start;
  15. ?>
复制代码

运行4次,除去第一次运行时间,三次时间分别为:

3.1967310905457
3.1296961307526
3.0872850418091

第三种方法代码如下:

  1. <?php
  2. function get_tm() {
  3. list ( $usec, $sec ) = explode ( " ", microtime () );
  4. return (( float ) $usec + ( float ) $sec);
  5. }
  6. $temp="test";
  7. $result="";
  8. $arr=array();
  9. define("num",100000);
  10. $start=get_tm();
  11. for($i=0;$i<num;$i++)
  12. {
  13. array_push($arr, $temp);
  14. }
  15. $result=join($arr);
  16. echo get_tm()-$start;
  17. ?>
复制代码

运行4次,除去第一次运行时间,三次时间分别为:

3.3184430599213
3.2759411334991
3.2663381099701

由上可见,直接通过.进行字符串的连接效率最为低下。

以上这篇关于php几种字符串连接的效率比较(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持程序员之家。



回复

使用道具 举报