• explode,split,preg_split性能比较


     

    explode,split,preg_split性能比较

    分类: php 1109人阅读 评论(1) 收藏 举报

    三个函数都是用来对字符串进行分割,下面分几个实验来比较之间的性能。

    1. explode与split比较

    都用字符进行分割,执行10次

    代码:

    1. for($num=0;$num<9;$num++)  
    2. {  
    3.     $stime=microtime();  
    4.     for($i=0;$i<10000;$i++)  
    5.     {  
    6.         explode(',','hello,world');  
    7.     }  
    8.     $etime=microtime();  
    9.     printf("explode takes %f  ",$etime-$stime);  
    10. }  
    11. for($num=0;$num<9;$num++)  
    12. {  
    13.     $stime=microtime();  
    14.     for($i=0;$i<10000;$i++)  
    15.     {  
    16.         split(',','hello,world');  
    17.     }  
    18.     $etime=microtime();  
    19.     printf("split takes %f  ",$etime-$stime);  
    20. }  

    结果:

    explode takes 0.009193 
    explode takes 0.007066 
    explode takes 0.007623 
    explode takes 0.005829 
    explode takes 0.005497 
    explode takes 0.005734 
    explode takes 0.005502 
    explode takes 0.005515 
    explode takes 0.005524 
    split takes 0.008976 
    split takes 0.008971 
    split takes 0.009030 
    split takes 0.009173 
    split takes 0.009913 
    split takes 0.012656 
    split takes 0.012153 
    split takes 0.009161 
    split takes 0.008948

    结论:都用字符进行分割的情况下,explode性能优于split

    split用正则进行分割:

    代码:

    1. for($num=0;$num<9;$num++)  
    2. {  
    3.     $stime=microtime();  
    4.     for($i=0;$i<10000;$i++)  
    5.     {  
    6.         explode(',','hello,world');  
    7.     }  
    8.     $etime=microtime();  
    9.     printf("explode takes %f  ",$etime-$stime);  
    10. }  
    11. for($num=0;$num<9;$num++)  
    12. {  
    13.     $stime=microtime();  
    14.     for($i=0;$i<10000;$i++)  
    15.     {  
    16.         split('/,/','hello,world');  
    17.     }  
    18.     $etime=microtime();  
    19.     printf("split takes %f  ",$etime-$stime);  
    20. }  


    结果:

    explode takes 0.005649
    explode takes 0.005719
    explode takes 0.005792
    explode takes 0.005975
    explode takes 0.005723
    explode takes 0.005812
    explode takes 0.005860
    explode takes 0.005756
    explode takes 0.005835
    split takes 0.005158 
    split takes 0.005170 
    split takes 0.005440 
    split takes 0.005402 
    split takes 0.005272 
    split takes 0.005434 
    split takes 0.006389 
    split takes 0.005414 
    split takes 0.005510

    结论:在split使用正则分割的情况下,两者性能不相上下

    2. split与preg_split比较

    代码:

    1. for($num=0;$num<9;$num++)  
    2. {  
    3.     $stime=microtime();  
    4.     for($i=0;$i<10000;$i++)  
    5.     {  
    6.         split('/,/','hello,world');  
    7.     }  
    8.     $etime=microtime();  
    9.     printf("split takes %f  ",$etime-$stime);  
    10. }  
    11. for($num=0;$num<9;$num++)  
    12. {  
    13.     $stime=microtime();  
    14.     for($i=0;$i<10000;$i++)  
    15.     {  
    16.         preg_split("/,/","hello,world");  
    17.     }  
    18.     $etime=microtime();  
    19.     printf("preg_split takes %f  ",$etime-$stime);  
    20. }  


    结果:

    split takes 0.005381 
    split takes 0.005568 
    split takes 0.005107 
    split takes 0.005097 
    split takes 0.005444 
    split takes 0.005538 
    split takes 0.005095 
    split takes 0.005112 
    split takes 0.005087 
    preg_split takes 0.009364 
    preg_split takes 0.009568 
    preg_split takes 0.009037 
    preg_split takes 0.008957 
    preg_split takes 0.009021 
    preg_split takes 0.009656 
    preg_split takes 0.009038 
    preg_split takes 0.008962 
    preg_split takes 0.009412

    结论:split性能优于preg_split


     




  • 相关阅读:
    聊聊关于性能优化和其他(一)
    JavaScript 事件循环及异步原理(完全指北)
    SPA路由机制详解(看不懂不要钱~~)
    Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
    Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)
    浅谈Generator和Promise原理及实现
    Kubernetes 服务目录
    Kubernetes 网络模型
    个人开源贡献记录
    【转载】DTO – 服务实现中的核心数据
  • 原文地址:https://www.cnblogs.com/muxiaoye/p/f1aa3ebef98f83a2ea01304383f81b64.html
Copyright © 2020-2023  润新知