注:本文为作者多年工作经验总结,转贴请注明出处 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. atitit.bsh BeanShell 的动态脚本使用java

    atitit.bsh BeanShell 的动态脚本使用java 1.1. BeanShell是一个小巧免费的JAVA源码解释器 ,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中. 亦可嵌入到J ...

  2. Windows进程间通信--共享内存映射文件(FileMapping)--VS2012下发送和接收

    之前以为两个互不相关的程序a.exe b.exe通信就只能通过网络,人家说可以通过发消息,我还深以为不然,对此,我表示万分惭愧. 之前课本上说的进程间通信,有共享内存.管道等之类的,但没有自己操刀写过 ...

  3. MySQL四:表操作

    阅读目录 表介绍 一 创建表 二 查看表结构 三 数据类型 四 表完整性约束 五 修改表ALTER TABLE 六 复制表 七 删除表 八 完整性约束 九 数据类型 表介绍 表相当于文件,表中的一条记 ...

  4. PyQt5 Function Parameter Declaration

    addWidget self.lcd = QLCDNumber() grid.addWidget(self.lcd,0,0,3,0) grid.setSpacing(10) void QGridLay ...

  5. Android应用架构之MVP---&gt;天气实例

    我们知道.Android App 本质上抽象成两个层次:视图和数据.为了App在发展过程中高速的适应变化,方便维护和高速迭代,我们要将数据和视图解耦,而在解藕方面我们的前辈们在漫长的软件开发经验中为我 ...

  6. Jenkins入门(一)

    Jenkins就是一个Java Web应用,它主要是干什么呢? 其实很简单: 下载一个jenkins的war包,然后扔到tomcat 的webapps中,启动这个tomcat,访问jenkins应用即 ...

  7. Android使用LinearViewLayout展示数据

    如果要滚动,使用ScrollView来包裹这个LinearViewLayout. ListView控件,自己带有滚动效果的. BaseAdapter LayoutInflater 其他两种绑定方式 A ...

  8. VSCode 运行go test显示打印日志

    在VSCode中运行go test,在代码中写的 fmt.Printf("TestB \n") 这些语句均不打印,只显示最终的结果 PASS ok github.com/B .03 ...

  9. Java 获取指定日期的方法汇总

    import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; impo ...

  10. shader随记

    o.WorldPos = normalize(mul((float4x4)unity_ObjectToWorld, v.vertex)).xyz;