注:本文为作者多年工作经验总结,转贴请注明出处 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性能方面编程技巧的总结的更多相关文章

  1. 转载--提高C++性能的编程技术

    读书笔记:提高C++性能的编程技术   第1章 跟踪范例 1.1 关注点 本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中.Trace对象会带来一定的开销,因此在默认情况 ...

  2. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  3. 15个提高编程技巧的JavaScript工具

    原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScri ...

  4. 11 个简单的 Java 性能调优技巧

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...

  5. 11个简单的Java性能调优技巧,傻瓜都能学会!

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...

  6. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  7. java命名规范和编程技巧

    一个好的java程序首先命名要规范. 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,方便维护等作用 Package 的命名 Package 的名字应该都是由一个小写 ...

  8. 从linux内核中学到的编程技巧 【转】

     从linux内核中学到的编程技巧  分类: LINUX 1构建泛型宏 (./linux/include/linux/kernel.h) #define min(x, y) ({ \ typeof(x ...

  9. 深入理解C#:编程技巧总结(二)

    原创文章,转载请注明出处! 以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 在上一篇 深入理解 ...

随机推荐

  1. python socket编程(socket)

    代码如下: server端: import sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostnam ...

  2. MySQL八:视图、触发器、事物、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 储存过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  3. Modern.IE,创建现代网站的给力开发工具!

    Modern.IE是微软推出的用来帮助开发者创建现代网站的基本开发工具.作为Web攻城师,最头疼的问题莫过于浏览器兼容性测试,各种类型浏览器,各种版本的浏览器,还有各种头疼的前缀等等.Modern.I ...

  4. 配置LANMP环境(10)-- 安装memcached与redis

    一.安装memcached 1.安装 yum install memcached 2.设置1G内存 memcached -u memcached -p -m -c -d 3.启动与设置开机自启动 sy ...

  5. MIC的异步传输

    关于signal和wait,属于异步传输的语法,即CPU端无需等待offload语句返回,即可异步运行下面的代码.一般用于启动MIC代码段后,并发执行CPU代码,达到同步执行的目的.另外一种用法是使用 ...

  6. erlang实现一个进程池 pool

    erlang的实现一个简单的进程池. erlang进程是非常轻量级的,这个进程池的主要目的是用一种通用的方式去管理和限制系统中运行的资源占用.当运行的工作者进程数量达到上限,进程池还可以把任务放到队列 ...

  7. tornado+ansible+twisted+mongodb运维自己主动化系统开发(四)

    这周好忙,依据之前的写了个简陋的demo.放在腾讯的云主机上了,大家多交流哈 demo地址 http://203.195.193.251/

  8. UVA 699 The Falling Leaves (二叉树水题)

    本文纯属原创.转载请注明出处,谢谢. http://blog.csdn.net/zip_fan. Description Each year, fall in the North Central re ...

  9. unity批量修改AssetBundleName与Variant

    批量修改指定路径下的资源的AssetBundleName与Variant. 脚本代码如下: using System.Collections; using System.Collections.Gen ...

  10. 基于SpringMVC国际化资源配置方式

    1.首先需要在spring-mvc-servlet.xml 中配置拦截器: <bean id="localeChangeInterceptor" class="or ...