代码优化

优化PHP代码的40条建议

前提是你 提交于 2020-03-11 13:44:31
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 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.

优化PHP代码的40条建议

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-11 06:44:47
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 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.

MDK编译优化笔记

北战南征 提交于 2020-03-11 06:00:37
在一次使用MDk的编译优化等级比较高的时候发现编译不优化时功能正常,开了优化等级0 2就出现异常,调试中看了很多博客总结一下。 一个变量,如果你的主程序要用到,同时中断还要用到,要加volatile修饰。告诉编译器这个变量是可能随时发生变化的,使得编译器编译程序的时候,每次都从RAM里面读取数据,而不是使用之前缓存到寄存器里面的值。 对于多任务的程序,如果一个公共变量被多个任务用到也要加volatile修饰。 同时变量定义的时候用了关键字volatile修饰,但是在其他文件引用时不加volatile变量修饰一样会被编译器优化掉。现则反过来想想,原因还是很简单的,MDK编译多个文件时是分别编译,最后再用链接器链接,当编译的时候一个模块引用另外一个模块的变量,完全是靠的变量声明,如果声明都不加volatile,那么引用的模块肯定会把变量当成普通变量的,再反推一下,如果原变量没有加volatile,但是声明的时候加了volatile,是不是引用的模块会将这个变量当成volatile型变量呢   C编译器是以每个C文件作为基本编译单元的,称为模块,被编译为obj;而模块之间的函数或变量访问都是通过标号来实现的,标号本身没有任何属性,只是提供给链接器使用的一个符号名称而已,标号的属性完全就靠调用的地方的原型声明来决定的!因此,你在一个.C模块中定义为volatile,仅仅是在

优化PHP代码的40条建议

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-11 06:00:08
转: 简介 英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。 1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10.函数代替正则表达式完成相同功能。 11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 13

优化PHP代码的40条建议

岁酱吖の 提交于 2020-03-11 05:14:02
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2.echo 比 print 快。 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5.注销那些不用的变量尤其是大数组,以便释放内存。 6.尽量避免使用__get,__set,__autoload。 7.require_once()代价昂贵。 8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 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.

日本代购贴吧蓝精灵安眠药

老子叫甜甜 提交于 2020-03-10 19:29:33
日本代购贴吧蓝精灵安眠药【电/薇177√5866√5404】【正.品.保.证】【顺.丰.快.递】【保.密.发.货】代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的目标是:减小代码的体积提高代码运行的效率代码优化细节 来源: https://www.cnblogs.com/suibixie/p/12457909.html

优化PHP代码的40条建议

心已入冬 提交于 2020-03-10 08:21:59
优化PHP代码的40条建议 40 Tips for optimizing your php Code 原文地址: http://reinholdweber.com/?p=3 英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。 1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2. echo is faster than print. echo 比 print 快。 3. Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 4. Set the maxvalue for your for-loops before and not in the loop. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 5. Unset your variables to free memory,

大数据量分页问题优化sql代码

我的梦境 提交于 2020-03-07 06:56:05
以下分享一点我的经验 一般刚开始学SQL语句的时候,会这样写 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的 代码如下: SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; 是的,速度提升到0.x秒了,看样子还行了 可是,还不是完美的! 以下这句才是完美的! 代码如下: SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010; 比上面那句,还要再快5至10倍 另外,如果需要查询 id 不是连续的一段,最佳的方法就是先找出 id ,然后用 in 查询 代码如下: SELECT * FROM table WHERE id IN(10000, 100000, 1000000...); 再分享一点 查询字段一较长字符串的时候,表设计时要为该字段多加一个字段,如,存储网址的字段 查询的时候,不要直接查询字符串,效率低下,应该查询该字串的crc32或md5 来源:

C语言代码优化示例(一)

隐身守侯 提交于 2020-03-07 03:55:37
在实际产品的软件开发过程中,很多时候会对代码的性能提出要求,追求最快的速度,提高程序运行效率,改善用户体验等,此时此刻,对代码的优化就非常有必要了,掌握代码的优化方法和技巧就很有必要了。 我们用下面的一段短小的代码为例,来看看优化的过程,并且简略分析一下起优化的原理。 这段代码在CRC的校验中有机会用到,功能是将一个字节的数据逐位的颠倒反转。 //功能: 将数据的位反转,即b0->b7,b1->b6...b7->b0 //des: 转换后的目标buffer //src: 源数据 //len: 数据长度 void Invert8 ( unsigned char * des , unsigned char * src , unsigned int len ) { unsigned char i , j , temp ; for ( j = 0 ; j < len ; j ++ ) { temp = 0 ; for ( i = 0 ; i < 8 ; i ++ ) { if ( ( * src ) & ( 1 << i ) ) temp | = 1 << ( 7 - i ) ; } * des = temp ; des ++ ; src ++ ; } } 我们先第一遍运行,看看这个常规写法的运行时间是多少(CPU速度72MHz) 调用:Invert8(dst,src,100);

iar、keil(ac5+ac6)编译效果小记

六月ゝ 毕业季﹏ 提交于 2020-03-06 10:27:29
stm32F103et6平台,cubemx生成的两个IDE工程 1、均无开启任务优化 iar8.32如下: keil5.29 ac5编译器 : keil5.29 ac6编译器 : 同样的代码,不开优化的情况下,ac6反而代码空间比较大 2、开启最高优化: iar:high(size) keil5.29 ac5编译器 :level 3 keil5.29 ac5编译器 :-Oz 开启优化的情况,ac6的表现还是不错的。 来源: https://www.cnblogs.com/CodeWorkerLiMing/p/12424942.html