zoukankan      html  css  js  c++  java
  • 针对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四种界定符
    设计模式 单例模式与工厂模式
    PHP include与require的区别
    面向对象 static abstract interface 等知识点
    gogland golang 颜色&字体 colors&font 配置文件
    什么是游戏中的帧同步
    kcp协议详解
    kcp流模式与消息模式对比
    kcp源码走读
    kcp结构体字段含义
  • 原文地址:https://www.cnblogs.com/Catherine2011/p/6543771.html
Copyright © 2011-2022 走看看