针对PHP性能方面编程技巧的总结
注:本文为作者多年工作经验总结,转贴请注明出处 Albert Wang
做PHP已经有4年多了吧,总是没写点什么总结一下,现在开始写博客了,也顺便总结下吧,留给那些新入行的朋友看看。
1. 不宜频繁使用常量
如在程序中定义了常量 define(’TEST_CONST’, ‘test’);
在某一函数中如果多次使用了这个常量TEST_CONST,那么最好将它赋值给一个局部变量来使用 $tmp = TEST_CONST;
多次调用常量是件很费时间的时,想象一下,如果全楼就一本书,是大家轮着看快还是复印一本自己看快呢?
2.写Log时使用fputs和error_log
基本上用这两个函数所耗内存差不多,时间上error_log比fputs略快些,而且写起来也比fputs省事,不用fopen和fclose了。
另外,如果程序中有频繁的log操作时可将log记录在内存中在析构函数中统一写文件,不过如果是error时的log就要在error_handler和exception_handler实时写了
3.array和object存储数据比较
这个其实比较的是内存占用了,传递的数据如果能用array就尽量用,而不要使用object,占用内存忒大
4.静态方法和动态方法
调用同一个类中的静态方法所用时间及内存都要比动态方法的小,毕竟静态方法不用实例化对象,少了很大一部分内存的
基于此原因,一些封装好了的类比如check,cache,html等等就尽量封装成静态的好了,用起来也方便,check::date($strDate),看起来也一目了然
还有静态调用的成员一定要声明成static,否则调用起来会产生一个E_STRICT警告,速度也会慢一些,仿佛PHP内部要做一些转换
5.使用require/include加载,避免require_once/include_once
如果你能保证你的程序书写的没有错误的话请尽量使用require/include加载其他PHP,如果使用require_once/include_once的话速度就会降下来,这两个函数中会验证是否已经加载过此文件,速度比较慢
另外,如果你使用的PHP版本小于5的话,最好使用require,因为include在你写这行的时候就已经加载了,而不是需要时加载
6.尽量使用系统常量而不是函数
比如:php_version()和PHP_VERSION;
如果使用常量的话,速度明显比使用函数快很多。
7.关于PHP的正则
这个嘛,总之一句话,能不用就不用,自己比较比用正则快的多,PHP的正则处理速度真的是不敢恭维。
8.判断字符长度小技巧
前几天新发现的一个小技巧
if (isset($str[9])) {}这样来判断的速度要比if (strlen($fubar) >= 10) {}快很多呦,新发现的,在一个外国人的博客上,留个地址大家看看
http://blog.dynom.nl/archives/String-length-vs-isset-to-check-string-lengths_20070807_5.html
9.替换字符串前的判断
如果不能肯定字符串中是否有要替换的值请先用strpos查找,再用str_replace来替换,strpos的速度是相当快的(比较str_replace而言可以忽略不计)
10.error_reporting(0)与@
@速度超慢
针对PHP性能方面编程技巧的总结的更多相关文章
- 转载--提高C++性能的编程技术
读书笔记:提高C++性能的编程技术 第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况 ...
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- 15个提高编程技巧的JavaScript工具
原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScri ...
- 11 个简单的 Java 性能调优技巧
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...
- 11个简单的Java性能调优技巧,傻瓜都能学会!
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- java命名规范和编程技巧
一个好的java程序首先命名要规范. 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,方便维护等作用 Package 的命名 Package 的名字应该都是由一个小写 ...
- 从linux内核中学到的编程技巧 【转】
从linux内核中学到的编程技巧 分类: LINUX 1构建泛型宏 (./linux/include/linux/kernel.h) #define min(x, y) ({ \ typeof(x ...
- 深入理解C#:编程技巧总结(二)
原创文章,转载请注明出处! 以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 在上一篇 深入理解 ...
随机推荐
- mongodb中批量将时间戳转变通用日期格式
1,官网提供的mongodb遍历脚本: 官方文档地址:https://docs.mongodb.org/manual/tutorial/remove-documents/ >var arr = ...
- Nginx 变量漫谈
转自:http://blog.sina.com.cn/openrestyNginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序.当然,是不是 ...
- java学习日历输出(一)
import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.GregorianCalendar; i ...
- python pytest
之前一直用unittest ,现在学习pytest 看看那个好 1. 安装 pip install -U pytest py.test --version 2. 只需要按照下面的规则: 测试文件以te ...
- Android创建library工程
本文着重介绍如何创建Android library,并且在工程中使用此library提供的资源,具体步骤如下:1. 创建一个Android工程,命名为sourceProj2. 右键--properti ...
- Linux Samba文件共享服务配置
http://blog.csdn.net/xht555/article/details/4631063
- java.lang.IllegalStateException: ImageView no longer exists. You should not use this PhotoViewAttacher any more.
java.lang.IllegalStateException: ImageView no longer exists. You should not use this PhotoViewAttach ...
- One Person Game(概率+数学)
There is a very simple and interesting one-person game. You have 3 dice, namelyDie1, Die2 and Die3. ...
- hdu_吃糖果(思维题)
吃糖果 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
什么叫上下文? 在你设计一个方法的时候,无法直接从方法参数或实例成员(字段或属性)获得的所有信息都是上下文.例如: 当前用户是谁? 刚才提供操作的数据库连接实例从哪里拿到? 这个方法从哪个 View ...