黑马程序员技术交流社区
标题:
PHP高效率的48条优化细节写法,强烈推荐看,定会收获颇多!
[打印本页]
作者:
huawei
时间:
2017-9-26 11:53
标题:
PHP高效率的48条优化细节写法,强烈推荐看,定会收获颇多!
本帖最后由 huawei 于 2017-9-26 14:18 编辑
写在最前面:作为成熟的PHP程序员,诚然我们更应该多花心思在业务和架构上。在开发效率和项目可维护性可扩展性面前,性能可能无足轻重。但是又懂得业务架构,又懂得开发效率,岂不是更好?
一、字符串
1.1 少用正则表达式
能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。没得说,正则最耗性能。
str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。
有没有你漏掉的好用的函数?
例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。
1.2 字符替换
如果需要转换的全是单个字符,用字符串作为 strtr() 函数完成替换,而不是数组:
$addr = strtr($addr, "abcd", "efgh"); // 建议
$addr = strtr($addr, array('a' => 'e', )); // 不建议
效率提升:10 倍。
str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4。
另外,不要做无谓的替换,即使没有替换,str_replace也会为其参数分配内存。很慢!
用 strpos 先查找(非常快),看是否需要替换,如果需要,再替换。
如果需要替换,效率几乎相等,差别在 0.1% 左右。
如果不需要替换:用 strpos 快 200%。
1.3 压缩大的字符串
使用 gzcompress() 和 gzuncompress() 对容量大的字符串进行压缩和解压,再存入和取出数据库。
这种内置的函数使用gzip算法,能压缩字符串90%。
1.4 echo 输出
echo 字符串用逗号代替点连接符更快些。
虽然,echo是一种语言结构,不是真正的函数。
但是,它可以把逗号隔开的多个字符串当作“函数”参数传入,所以速度会更快。
echo $str1, $str2; // 速度快
echo $str1 . $str2;// 速度稍慢
1.5 尽量用单引号
PHP 引擎允许使用单引号和双引号来封装字符串变量,但是它们的速度是有很大的差别的!
使用双引号的字符串会告诉 PHP 引擎,首先去读取字符串内容,查找其中的变量,并改为变量对应的值。
一般来说字符串是没有变量的,使用双引号会导致性能不佳。
最好使用字符串连接,而不是双引号字符串。
$output = "This is a plain string"; // 不好的实践
$output = 'This is a plain string'; // 好的实践
$type = "mixed"; // 不好的实践
$output = "This is a $type string";
$type = 'mixed'; // 好的实践
$output = 'This is a ' . $type . ' string';
1.6 使用isset代替strlen
在检验字符串长度时,我们第一想法会使用 strlen() 函数。
此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。
但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化、哈希查找,会跟随被调用的函数一起执行。
在某些情况下,你可以使用 isset() 技巧加速执行你的代码。例如:
if (strlen($foo) < 5) { echo "Foo is too short";}// 使用isset()
if (!isset($foo{5})) { echo "Foo is too short";}
1.7 用split分割字符串
在分割字符串时,split()要比explode()快。
split()
0.001813 - 0.002271 seconds (avg 0.002042 seconds)
explode()
0.001678 - 0.003626 seconds (avg 0.002652 seconds)
1.8 echo效率高于print
因为echo没有返回值,print返回一个整型。
注意:echo输出大字符串的时候,如果没有调整就会严重影响性能。
打开Apache的mod_deflate进行压缩,或者打开ob_start将内容放进缓冲区,可以改善性能问题。
二、语句
三、函数
四、变量
五、数组
六、架构
精华推荐:
2017最新PHP学习路线图(附完整视频资源)+源码+技巧/经验+求职+前景总结!
PHP程序员面试失败,大部分死在这29个问题上
小白自学PHP前必知的50个问题
作者:
janson
时间:
2017-9-27 15:27
厉害
作者:
poorpenguin
时间:
2017-9-28 09:11
学习了。都是干货啊
作者:
zhu@
时间:
2017-9-28 22:06
来看看看..哈哈哈
作者:
caohades
时间:
2017-9-29 09:08
console.log('66666');
作者:
门徒13
时间:
2017-9-30 15:20
让我看看
作者:
lhy888
时间:
2017-10-1 09:02
看看
作者:
eddy-2013
时间:
2017-10-6 17:57
学习了哈~
作者:
ningjian
时间:
2017-10-7 16:51
过来学习来了
作者:
kerwin_nan
时间:
2017-10-11 16:24
66666666666666
作者:
tiny911_2017
时间:
2017-10-16 23:06
满满的干货
作者:
Y-先生
时间:
2017-10-17 09:39
good ! this is very good
作者:
打小我就行
时间:
2017-10-17 16:00
作者:
justin298
时间:
2017-10-24 22:12
66666,学习学习
作者:
燕粤
时间:
2017-10-25 15:23
谢谢了,我会好好认真学习的
作者:
ly116190596
时间:
2017-10-26 00:20
dasdasdsad
作者:
菜的抠脚
时间:
2017-10-30 15:04
666666666666666666
作者:
木叶潇潇
时间:
2017-11-3 10:06
6666666666666666666
作者:
瞬间回忆
时间:
2017-11-10 05:43
PHP高效率的48条优化细节写法
作者:
做个坏的程序员
时间:
2017-11-10 14:32
谢谢楼主无私贡献{:8_469:}
作者:
comebas
时间:
2017-11-14 20:22
恩 有些知道。有些不知道
作者:
zhuifengjiayou
时间:
2017-11-14 22:05
看看学些下
作者:
changda
时间:
2017-11-17 12:25
PHP高效率的48条优化细节写法,强烈推荐看,定会收获颇多
作者:
thinkJUN
时间:
2017-11-22 18:34
感谢感谢感谢感谢感谢感谢感谢感谢
作者:
rchzjryc
时间:
2017-11-23 21:40
学习了。都是干货啊
作者:
mvpicy
时间:
2017-11-27 09:23
学习来了
作者:
Ear、若轩
时间:
2017-12-6 23:12
????
作者:
101大哥
时间:
2018-1-4 11:33
11111111111111111111111111
作者:
PHP纸老虎
时间:
2018-1-10 15:31
因为echo没有返回值,print返回
作者:
AllenPHP
时间:
2018-1-25 20:37
语句优化
作者:
Rakishly
时间:
2018-3-9 14:34
http://localhost
作者:
zizu
时间:
2018-3-31 16:03
学习 ,var_dump
作者:
dongyanjie
时间:
2018-3-31 19:16
学习学习
作者:
方大佬
时间:
2018-4-8 09:52
作者:
liujun1234
时间:
2018-6-4 19:37
学习了。都是干货啊
作者:
su_yin12
时间:
2018-8-17 11:57
学习学习
作者:
qianyewoailuo
时间:
2018-8-19 18:47
PHP高效率的48条优化细节写法
作者:
葬夜
时间:
2018-9-4 18:03
第三款打了肯德基埃里克
作者:
yhm12345687
时间:
2018-9-9 23:41
11111111111111
作者:
uuuqqq
时间:
2018-10-7 08:25
神啊,终于让我找到了!
作者:
Sunsines
时间:
2018-12-18 23:05
学无止境
作者:
bug刘
时间:
2019-1-8 17:02
学习学习
作者:
tyhzp
时间:
2019-3-5 19:42
来学习,谢谢分享
作者:
啊b
时间:
2019-12-10 10:36
1111111111111111111111111111
作者:
Try-again
时间:
2021-4-29 21:28
优化php代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2