用单引号代替双引号来包含字符串, 这样做会更快一些. 因为 PHP 会在双引号包围的字符串中搜寻变量, 单引号则不会, 注意: 只有 echo 能这么做, 它 是一种可以把多个字符串当作参数的 "函数"(译注: PHP 手册中说 echo 是语言结构, 不是真正的函数, 故把函数加上了双引号).
1, 如果能将类的方法定义成 static, 就尽量定义成 static, 它的速度会提升将近 4 倍.
2,$row['id'] 的速度是 $row[id]的 7 倍.
3,echo 比 print 快, 并且使用 echo 的多重参数 (译注: 指用逗号而不是句点) 代替字符串连接, 比如 echo $str1,$str2.
4, 在执行 for 循环之前确定最大循环数, 不要每循环一次都计算最大值, 最好运用 foreach 代替.
5, 注销那些不用的变量尤其是大数组, 以便释放内存.
6, 尽量避免使用__get,__set,__autoload.
7,require_once()代价昂贵.
8,include 文件时尽量使用绝对路径, 因为它避免了 PHP 去 include_path 里查找文件的速度, 解析操作系统路径所需的时间会更少.
9, 如果你想知道脚本开始执行 (译注: 即服务器端收到客户端请求) 的时刻, 使用 $_SERVER['REQUEST_TIME']要好于 time().
10, 函数代替正则表达式完成相同功能.
11,str_replace 函数比 preg_replace 函数快, 但 strtr 函数的效率是 str_replace 函数的四倍.
12, 如果一个字符串替换函数, 可接受数组或字符作为参数, 并且参数长度不太长, 那么可以考虑额外写一段替换代码, 使得每次传递参数是一个字符, 而不是只写一行代码接受数组作为查询和替换的参数.
13, 使用选择分支语句 (译注: 即 switch case) 好于使用多个 if,else if 语句.
14, 用 @屏蔽错误消息的做法非常低效, 极其低效.
15, 打开 apache 的 mod_deflate 模块, 可以提高网页的浏览速度.
16, 数据库连接当使用完毕时应关掉, 不要用长连接.
17, 错误消息代价昂贵.
18, 在方法中递增局部变量, 速度是最快的. 几乎与在函数中调用局部变量的速度相当.
19, 递增一个全局变量要比递增一个局部变量慢 2 倍.
20, 递增一个对象属性 (如:$this->prop++) 要比递增一个局部变量慢 3 倍.
21, 递增一个未预定义的局部变量要比递增一个预定义的局部变量慢 9 至 10 倍.
22, 仅定义一个局部变量而没在函数中调用它, 同样会减慢速度(其程度相当于递增一个局部变量).PHP 大概会检查看是否存在全局变量.
23, 方法调用看来与类中定义的方法的数量无关, 因为我 (在测试方法之前和之后都) 添加了 10 个方法, 但性能上没有变化.
24, 派生类中的方法运行起来要快于在基类中定义的同样的方法.
25, 调用带有一个参数的空函数, 其花费的时间相当于执行 7 至 8 次的局部变量递增操作. 类似的方法调用所花费的时间接近于 15 次的局部变量递增操作.
26,Apache 解析一个 PHP 脚本的时间要比解析一个静态 html 页面慢 2 至 10 倍. 尽量多用静态 HTML 页面, 少用脚本.
27, 除非脚本可以缓存, 否则每次调用时都会重新编译一次. 引入一套 PHP 缓存机制通常可以提升 25% 至 100% 的性能, 以免除编译开销.
28, 尽量做缓存, 可使用 Memcached.Memcached 是一款高性能的内存对象缓存系统, 可用来加速动态 web 应用程序, 减轻数据库负载. 对运算码 (OP code)的缓存很有用, 使得脚本不必为每个请求做重新编译.
29, 当操作字符串并需要检验其长度是否满足某种要求时, 你想当然地会使用 strlen()函数. 此函数执行起来相当快, 因为它不做任何计算, 只返回 在 zval 结构 (C 的内置数据结构, 用于存储 PHP 变量) 中存储的已知字符串长度. 但是, 由于 strlen()是函数, 多多少少会有些慢, 因为函数调用会经过诸多步 骤, 如字母小写化(译注: 指函数名小写化, PHP 不区分函数名大小写), 哈希查找, 会跟随被调用的函数一起执行. 在某些情况下, 你可以使用 isset() 技巧加速执行你的代码.
- (举例如下)
- if (strlen($foo) < 5) {
- echo "Foo is too short"$$
- }
- (与下面的技巧做比较)
- if (!isset($foo{
- 5
- })) {
- echo "Foo is too short"$$
- }
调用 isset()恰巧比 strlen()快, 因为与后者不同的是, isset()作为一种语言结构, 意味着它的执行不需要函数查找和字母小写化. 也就是说, 实际上在检验字符串长度的顶层代码中你没有花太多开销.
34, 当执行变量 $i 的递增或递减时,$i++ 会比 ++$i 慢一些. 这种差异是 PHP 特有的, 并不适用于其他语言, 所以请不要修改你的 C 或 Java 代 码并指望它们能立即变快, 没用的.++$i 更快是因为它只需要 3 条指令 (opcodes),$i++ 则需要 4 条指令. 后置递增实际上会产生一个临时变量, 这个临时变量随后被递增. 而前置递增直接在原值上递增. 这是最优化处理的一种, 正如 Zend 的 PHP 优化器所作的那样. 牢记这个优化处理不失为一个好主 意, 因为并不是所有的指令优化器都会做同样的优化处理, 并且存在大量没有装配指令优化器的互联网服务提供商(ISPs) 和服务器.
35, 并不是事必面向对象(OOP), 面向对象往往开销很大, 每个方法和对象调用都会消耗很多内存.
36, 并非要用类实现所有的数据结构, 数组也很有用.
37, 不要把方法细分得过多, 仔细想想你真正打算重用的是哪些代码?
38, 当你需要时, 你总能把代码分解成方法.
39, 尽量采用大量的 PHP 内置函数.
40, 如果在代码中存在大量耗时的函数, 你可以考虑用 C 扩展的方式实现它们.
41, 评估检验 (profile) 你的代码. 检验器会告诉你, 代码的哪些部分消耗了多少时间. Xdebug 调试器包含了检验程序, 评估检验总体上可以显示出代码的瓶颈.
42,mod_zip 可作为 Apache 模块, 用来即时压缩你的数据, 并可让数据传输量降低 80%.
43, 在可以用 file_get_contents 替代 file,fopen,feof,fgets 等系列方法的情况下, 尽量用 file_get_contents, 因为他的效率高得多! 但是要注意 file_get_contents 在打开一个 URL 文件时候的 PHP 版本问题;
44, 尽量的少进行文件操作, 虽然 PHP 的文件操作效率也不低的;
45, 优化 Select SQL 语句, 在可能的情况下尽量少的进行 Insert,Update 操作(在 update 上, 我被恶批过);
46, 尽可能的使用 PHP 内部函数(但是我却为了找个 PHP 里面不存在的函数, 浪费了本可以写出一个自定义函数的时间, 经验问题啊!);
47, 循环内部不要声明变量, 尤其是大变量: 对象(这好像不只是 PHP 里面要注意的问题吧?);
48, 多维数组尽量不要循环嵌套赋值;
49, 在可以用 PHP 内部字符串操作函数的情况下, 不要用正则表达式;
50,foreach 效率更高, 尽量用 foreach 代替 while 和 for 循环;
51, 用单引号替代双引号引用字符串;
52,"用 i+=1 代替 i=i+1. 符合 c/c++ 的习惯, 效率还高";
53, 对 global 变量, 应该用完就 unset()掉;
来源: http://www.bubuko.com/infodetail-2846812.html