想要编写出好的代码,这需要你在中韩两国的日常开发中积累。 如果你平时注意到下面的代码,那么恭喜你,你在技术提升方面已经打下了一些基础,并且编出了好的代码,说白了,就是你注意到了性能的问题。 代码优化也是性能优化的一部分。 拿出来看看,平时需要注意编码。 也希望你能养成良好的习惯!
1.使用单冒号而不是双冒号来包含字符串,这样会更快。 由于PHP会搜索双冒号包围的字符串中的变量,单冒号不会,注意:只有echo可以做到这一点,它是一个可以接受多个字符串作为参数的“函数”(这个翻译:在PHP指南中是这样说的) echo 是一种语言结构,而不是一个真正的函数,因此该函数添加了双冒号)。
2、如果能将类的方法定义为静态,尽量定义为静态,其速度会提高近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、包含文件时尽量使用绝对路径,因为这样可以避免PHP在include_path中查找文件的速度变慢,解析操作系统路径所需的时间会更少。
10.如果想知道脚本什么时候开始执行(这个翻译:即服务器收到客户端的请求),最好使用$_SERVER['REQUEST_TIME']而不是time()
11、函数替换正则表达式,完成同样的功能。
12. str_replace函数比preg_replace函数更快,但是strtr函数比str_replace函数效率高四倍。
13、如果一个字符串替换函数可以接受链表或者字符作为参数,并且参数粗细也不太长,那么可以考虑额外写一段替换代码,这样每次都将参数作为字符传递,而不是只写一行代码接受一个数组作为查询和替换的参数。
14、使用替代分支语句(本译:switchcase)比使用多个if和elseif语句更好。
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 应用程序并减少数据库负载。 操作码的缓存很有用,这样就不必为每个请求重新编译脚本。
30、当操作一个字符串,需要检查其粗细是否满足一定要求时,就会贸然使用strlen()函数。 这个函数执行得相当快,因为它不做任何计算,它只是返回存储在 zval 结构(C 的外部数据结构,用于存储 PHP 变量)中的已知字符串厚度。 而且,因为strlen()是一个函数,所以会有些慢,因为函数调用会经过很多步骤,比如字母的大小写(这个翻译:指函数名的大小写,PHP不区分大小写)函数名),哈希查找,将与被调用的函数一起执行。 在极少数情况下,您可以使用 isset() 方法来加快代码的执行速度。 (示例如下) if(strlen($foo)<5){echo "Fooistooshort"$$} (与下面的方法比较) if(!isset($foo{5})){echo "Fooistooshort"$$}调用 isset() 恰好比 strlen() 更快,因为与前者不同,isset() 是一种语言构造,这意味着它的执行不需要函数查找和字母大写。 也就是说,您实际上并没有在检查字符串宽度的顶层代码中花费太多开销。
31. 当执行变量$i的递增或递减时,$i++会比++$i慢。 这些差异是 PHP 特有的,不适用于其他语言,因此请不要更改您的 C 或 Java 代码并期望它们立即更快,这是行不通的。 ++$i 更快,因为它只需要 3 条指令(操作码),而 $i++ 需要 4 条指令。 预递增实际上形成一个临时变量,然后再递增。 后自增直接在原值上自增。 这是一种优化,由 Zend 的 PHP 优化器完成。 记住这种优化是个好主意,因为并非所有的优化器都会进行相同的优化,但有很多互联网服务提供商 (ISP) 和服务器没有安装优化器。
32. 不一定要面向对象(OOP)。 面向对象往往是昂贵的,每个方法和对象调用都会消耗大量的显存。
33、不一定要用类来实现所有的数据结构,链表也很有用。
34.不要把方法细分太多,仔细想想你真正要复用的代码是什么?
35. 当你需要的时候,你总是可以将代码分解为方法。
36.尽量使用大量PHP外部函数。
37、如果代码中有大量耗时的函数,可以考虑以C扩展的形式实现。
38. 分析您的代码。 检查器会告诉您代码的哪一部分花费了多少时间。 Xdebug 调试器包括检查程序php 字符串编码,评估检查通常可以显示代码困难。
39. mod_zip可以用作Apache模块来立即压缩您的数据并将数据传输量增加80%。
40、当file_get_contents可以用来替代file、fopen、feof、fgets等系列方法时,尽量使用file_get_contents,因为它的效率要高很多! 并且在打开URL文件时注意PHP版本的file_get_contents;
41、尽量少做文件操作php 字符串编码,虽然PHP的文件操作效率不低;
42、优化SelectSQL语句,尽量少执行Insert和Update操作(在update上,我被骂得很惨);
43. 尽可能使用PHP内部函数(而且我浪费了本来可以写自定义函数的时间来寻找PHP中不存在的函数,经验是个问题!);
44、不要在循环内部声明变量,尤其是大变量:对象(这似乎不仅仅是PHP中应该注意的问题?);
45、多维链表尽量不要循环嵌套形参;
46.当可以使用PHP内部字符串操作函数时,不要使用正则表达式;
47、foreach效率更高,尽量用foreach代替while和for循环;
48、使用单冒号代替双冒号来引用字符串;
49、“将i=i+1替换为i+=1,符合c/c++的习惯,效率更高”
50、对于全局变量,unset()应该用完;
以上内容希望对您有所帮助。 如有需要,可以添加下方二维码进群交流,学习新技术。
如果你想和PHP高手交流,加Momo拉你进群
如果你想获取学习资料,添加Momo,给你发资源