前言:
在经历2-3年的时间,php程序员可以完成基本的功能性开发。但是这时候会有一个小瓶颈。就是不知道怎么去优化自己的代码。
优化代码主要有两方面.
1.php代码规范的优化。让自己代码变的更具可维护性,可读性更强.便于团队开发协作.
这里就不作详细介绍。大家可以参考 https://github.com/jupeter/clean-code-php
2.php性能优化.主要包括三个部分.
(1)phpy语言优化
(2)php相关的优化(数据库,硬件,操作系统)
(3)php底层c扩展优化
关于这里性能瓶颈,本人也是踩过坑的。具体可以参考https://blog.csdn.net/dennis211/article/details/79498514
正文:
1.php代码层面的优化
(1)多使用php的内置函数,少用php的代码.
解释:php底层是由于c语言写的.当然也包括内置函数.而c是静态语言。而php是动态语言.
接下来我们做个测试。
数据统一为50万条。功能统一设置过过滤数组中的空白数据.
首先先上php代码的测试结果.
接下来是php内置函数的测试结果.
结论:在50万条数据量级,过滤空白字符.php代码和内置函数时间差距。差了1.83秒。25倍的差距。效果明显
(2)不使用抑错符@
结论:在50万条数据的量级.时间差了0.2秒。基本没有什么差别
如果对于千万级。亿级数据。这个还是需要注意。
(3)节省内存
查数据精确到字段,select id,name 取代 select *
读取文件完毕.记得close连接
unset掉没用的变量.
(4)避免循环内多次执行
之前在做统计的时候.就遇到这个问题
for循环中统计数量
优化统计数量的代码
从原来的1.984秒提高到了0.151秒。整整13倍的差距. 效果明显
2.php相关优化
php性能开销 读取内存 < 读取数据库 < 读取文件IO < 网络层的IO
例子:https://blog.csdn.net/dennis211/article/details/79498514
在10万条数据量级插入数据库。从15秒直接优化到0.5秒。
把网络的开销降低到读取数据库层的开销。效果明显
例子:
涉及多表操作
先查出来再插入表.
可以通过一条语句.查询插入完成. 优化网络层的开销.