`

PHP 50个提高性能的写法

阅读更多

1、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。


2、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。


3、$row[’id’] 的速度是$row[id]的7倍。


4、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。


5、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。


6、注销那些不用的变量尤其是大数组,以便释放内存。


7、尽量避免使用__get,__set,__autoload。


8、require_once()代价昂贵。


9、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。


10、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用 $_SERVER[‘REQUEST_TIME’] 要好于time()。


11、函数代替正则表达式完成相同功能。


12、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。


13、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。


14、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。


15、用@屏蔽错误消息的做法非常低效,极其低效。


16、打开apache的mod_deflate模块,可以提高网页的浏览速度。


17、数据库连接当使用完毕时应关掉,不要用长连接。


18、错误消息代价昂贵。


19、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。


20、递增一个全局变量要比递增一个局部变量慢2倍。


21、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。


22、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。


23、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。


24、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。


25、派生类中的方法运行起来要快于在基类中定义的同样的方法。


26、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。


27、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。


28、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。


29、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。


30、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用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()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。


31、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。


32、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。


33、并非要用类实现所有的数据结构,数组也很有用。


34、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?


35、当你需要时,你总能把代码分解成方法。


36、尽量采用大量的PHP内置函数。


37、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。


38、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。


39、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。


40、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题。


41、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的。


42、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作。


43、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!)。


44、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?)。


45、多维数组尽量不要循环嵌套赋值。


46、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式。


47、foreach效率更高,尽量用foreach代替while和for循环。


48、用单引号替代双引号引用字符串。


49、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”。


50、对global变量,应该用完就unset()掉。

 

 

 

 

 

 

1
1
分享到:
评论

相关推荐

    经典总结php效率高写法!

    ### 经典总结:提升PHP效率的高阶写法 在现代Web开发中,PHP作为一门广泛使用的服务器端脚本语言,其性能优化一直是开发者关注的焦点。以下是从标题、描述以及部分文件内容中提炼出的提升PHP效率的关键知识点,旨在...

    PHP中几个可以提高运行效率的代码写法、技巧分享

    接下来,我们将详细探讨文章中所提到的五种能够提高PHP代码运行效率的写法和技巧。 一、遍历数组 在处理数组时,尤其是在大型数组中,减少不必要的操作可以显著提高性能。文中提到了一个在遍历数组时关于count函数...

    php 高性能书写

    在讨论PHP高性能书写时,一个核心的性能优化策略是减少条件判断的数量,尤其是在循环中。这段内容展示了两种不同的代码执行方式,以及它们对...每个细节都值得开发者去深入研究和实践,以达到提升整体应用性能的目的。

    优化php效率,提高php性能的一些方法

    在数据库层面提升性能,避免在update操作上犯错误。 4. 尽量使用PHP的内部函数,因为它们通常是优化过的,运行更快。避免浪费时间寻找不存在于PHP标准库中的函数。 5. 循环内部不要声明变量,尤其是大型变量,例如...

    php 高效率写法 推荐

    这些技巧不仅可以帮助开发者写出更加高效的代码,还能在一定程度上提高系统的整体性能。值得注意的是,不同的应用场景可能会有不同的最优实践,因此在实际开发过程中还需要结合具体情况进行选择和调整。希望本文能够...

    php-7.4.7.tar.gz

    PHP 7.4.7是该语言的一个重要版本,它提供了许多性能优化、新特性和错误修复,使得开发过程更加高效且稳定。 PHP 7.4系列作为PHP的一个主要分支,引入了多项改进,包括类型提示增强、空合并操作符(null coalescing...

    php-7.4.16.tar.gz

    总结来说,PHP 7.4.16是PHP开发的一个重要版本,通过高效的编译和安装过程,我们可以轻松地将其集成到我们的开发环境中,享受到其带来的性能提升和新功能的便利。无论你是初学者还是经验丰富的开发者,PHP 7.4.16都...

    PHP工具PHPquery

    **PHPquery:强大的PHP文档对象模型...无论是在进行网页抓取、数据分析还是动态内容生成,PHPquery都能有效地提升开发效率和代码质量。如果你在PHP项目中需要处理HTML或XML文档,PHPquery无疑是一个值得考虑的工具。

    惠新宸关于php7的说明文档

    - PHPNG(Next Generation):这是一种对引擎的重构,目的是提高性能。 - 抽象语法树(AST):这是PHP7的一个重要特性,它能够提升解析速度。 - Int64改进:支持大于2GB的字符串和文件上传,实现了跨平台的完全64位...

    php无限分类树类方法.zip

    在实际项目中,你可以根据具体需求对这个类进行扩展,例如增加缓存支持,提高性能,或者添加更多的功能。 总结来说,PHP无限分类树类方法对于处理层次结构的数据非常有效,如网站导航、产品分类等场景。通过类库...

    基于PHP的风吟PHP版 CSS压缩工具.zip

    总结来说,基于PHP的风吟CSS压缩工具是提高网站性能的一个利器,它利用PHP语言的强大功能对CSS文件进行高效压缩。开发者在使用这个工具时,不仅需要掌握PHP编程技能,还要理解CSS的工作原理和前端构建流程。通过深入...

    php的扩展写法总结

    同样的运算代码,使用C来开发,性能会比PHP要提升数百倍。IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势。 另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据,C扩展可操作的范围更...

    PHP5。0自学资料

    PHP5.0版本是PHP发展中的一个重要里程碑,它引入了许多新特性,提高了性能,并且增强了对面向对象编程的支持。 一、PHP5.0的新特性 1. 面向对象编程的增强:在PHP5中,类和对象的概念得到了强化。类定义支持访问...

    解析PHP高效率写法(详解原因)

    本文将对PHP高效率写法进行解析,介绍一些提高PHP代码执行效率的方法和技巧。 1. 尽量使用静态方法 在面向对象编程中,静态方法不依赖于类的实例,因此它们的调用速度比实例方法快。在测试时,静态方法的执行速度...

    预览图片的专业写法

    预览图片的专业写法涉及到多个技术层面,包括图像处理、前端开发、后端服务以及用户交互设计。下面我们将详细探讨这个主题,涵盖关键知识点。 1. 图像格式与编码: 预览图片首先需要理解常见的图像格式,如JPEG、...

    APISpace 驾驶证OCR API接口 PHP调用示例代码

    - **API评分**:APISpace平台会根据API的性能、稳定性、更新频率和活跃度等指标对API进行评分,为开发者提供决策参考。 - **API社区**:开发者可以在平台上查找、开放、购买、测试和使用API,与同行交流和合作。 - *...

    php代码-环境为 PHP7.2 版本

    在PHP的世界里,PHP 7.2是一个重要的版本,它带来了许多性能提升和新特性,同时也废弃了一些旧的功能。这个压缩包包含两个文件:main.php 和 README.txt,这表明我们可能将要探讨一个基于PHP 7.2的简单项目或示例...

    php执行sql语句的写法

    - 避免全表扫描,使用索引,优化查询结构,减少JOIN操作,都可以提高SQL执行效率。 9. **日志和调试**: - 在开发过程中,记录SQL语句和执行时间可以帮助调试和优化。可以使用`EXPLAIN`关键字分析查询执行计划,...

    php 代码优化指南,给你的php加速

    如果函数如字符串替换函数接受数组和单个字符作为参数,并且替换列表不是特别长,可以考虑写几个冗余的替换语句,每次只传递一个字符进行替换,这样有时可以提高性能。 #### 12. 使用`switch-case`结构代替多重`if-...

Global site tag (gtag.js) - Google Analytics