PHP把下划线分隔命名的字符串转换成驼峰式命名方式(带10万次执行效率测试结果)
来源:互联网 发布:php基础知识测试题 编辑:程序博客网 时间:2024/05/29 18:10
<?php//微妙时间function microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);} //将下划线命名转换为驼峰式命名function convertUnderline1 ( $str , $ucfirst = true){ while(($pos = strpos($str , '_'))!==false) $str = substr($str , 0 , $pos).ucfirst(substr($str , $pos+1)); return $ucfirst ? ucfirst($str) : $str;} //将下划线命名转换为驼峰式命名function convertUnderline2 ( $str , $ucfirst = true){ $str = explode('_' , $str); foreach($str as $key=>$val) $str[$key] = ucfirst($val); if(!$ucfirst) $str[0] = strtolower($str[0]); return implode('' , $str);} //将下划线命名转换为驼峰式命名function convertUnderline3 ( $str , $ucfirst = true){ $str = ucwords(str_replace('_', ' ', $str)); $str = str_replace(' ','',lcfirst($str)); return $ucfirst ? ucfirst($str) : $str;} //将下划线命名转换为驼峰式命名function convertUnderline4 ( $str , $ucfirst = true){ $str = preg_replace('/_([A-Za-z])/e',"strtoupper('$1')",$str); return $ucfirst ? ucfirst($str) : $str;} //将下划线命名转换为驼峰式命名function convertUnderline5 ( $str , $ucfirst = true){ $str = preg_replace_callback('/([-_]+([a-z]{1}))/i',function($matches){ return strtoupper($matches[2]); },$str); return $ucfirst ? ucfirst($str) : $str;} $counts = 100000;//第1种方式调用10w次所需时间$s1 = microtime_float();for ($i=0;$i<$counts;$i++){ $str= 'abcd_efgh_igk_lmn'; convertUnderline1($str);}$e1 = microtime_float();echo 'convertUnderline1: run time = ';echo $e1-$s1;echo '<br />'; //第2种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i<$counts;$i++){ $str= 'abcd_efgh_igk_lmn'; convertUnderline2($str);}$e2 = microtime_float();echo 'convertUnderline2: run time = ';echo $e2-$s2;echo '<br />'; //第3种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i<$counts;$i++){ $str= 'abcd_efgh_igk_lmn'; convertUnderline3($str);}$e2 = microtime_float();echo 'convertUnderline3: run time = ';echo $e2-$s2;echo '<br />'; //第4种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i<$counts;$i++){ $str= 'abcd_efgh_igk_lmn'; convertUnderline4($str);}$e2 = microtime_float();echo 'convertUnderline4: run time = ';echo $e2-$s2;echo '<br />'; //第5种方式调用10w次所需时间$s2 = microtime_float();for ($i=0;$i<$counts;$i++){ $str= 'abcd_efgh_igk_lmn'; convertUnderline4($str);}$e2 = microtime_float();echo 'convertUnderline5: run time = ';echo $e2-$s2;echo '<br />';
经过测试发现,效率由高到低为 方法3>方法2>方法1>方法4>方法5 当然这是每个函数执行10w次才能看出的结果,当然1w次也能看出差别,1次就可以忽略不计了。
下面是测试结果:
执行1K次:
convertUnderline1: run time = 0.005000114440918
convertUnderline2: run time = 0.0040009021759033
convertUnderline3: run time = 0.0039999485015869
convertUnderline4: run time = 0.014001131057739
convertUnderline5: run time = 0.01600193977356
执行1w次:
convertUnderline1: run time = 0.056005954742432
convertUnderline2: run time = 0.033003091812134
convertUnderline3: run time = 0.028002977371216
convertUnderline4: run time = 0.14401507377625
convertUnderline5: run time = 0.13701295852661
执行10w次:
convertUnderline1: run time = 0.44704508781433
convertUnderline2: run time = 0.32203197479248
convertUnderline3: run time = 0.2670259475708
convertUnderline4: run time = 1.3601360321045
convertUnderline5: run time = 1.3231329917908
- PHP把下划线分隔命名的字符串转换成驼峰式命名方式(带10万次执行效率测试结果)
- PHP把驼峰式命名方式转换成下划线分隔命名的字符串
- 驼峰式命名的字符串与数据库字段下划线大写方式的转换
- 字符串的下划线命名和驼峰命名转换
- 字符串的下划线命名和驼峰命名转换
- 下划线分隔的字符串,转换为驼峰式字符串
- 用PHP把html带连字符的属性转换为驼峰命名
- 驼峰命名法(CamelCase)和下划线风格(UnderScoreCase)字符串之间的转换工具类
- 驼峰命名法(CamelCase)和下划线风格(UnderScoreCase)字符串之间的转换工具类
- java,下划线与驼峰命名转换
- js驼峰命名和下划线转换
- 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)字符之间的转换
- 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)字符之间的转换
- 驼峰命名法与数据库下划线命名的字符串快速转化,方便操作数据
- php 帕斯卡命名转换成下划线分割命名
- 下划线命名法 vs 驼峰命名法
- java下划线命名转驼峰命名
- [JS]转换驼峰命名
- Halide学习笔记----Halide tutorial源码阅读5
- ARToolkit Camera Calibration Android
- ajax初始化和select-option :change获取相应的值
- 前端 点击弹窗确定取消
- laravel 数据查询(集合)
- PHP把下划线分隔命名的字符串转换成驼峰式命名方式(带10万次执行效率测试结果)
- 用java序列化和阻塞IO模型实现RPC
- Java Socket实现文件传输
- python自学笔记(6)--Python函数式编程、函数的装饰器、递归
- 分库分表框架cobar,cobar-client,tddl,sharding-JDBC
- 修改tomcat的端口与部分中文乱码
- Spark Streaming——Checkpoint
- 第5章 运算符
- web开发从入门到放弃