Chinaunix首页 | 论坛 | 博客
  • 博客访问: 660389
  • 博文数量: 110
  • 博客积分: 8090
  • 博客等级: 中将
  • 技术积分: 1217
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-10 15:32
文章分类

全部博文(110)

文章存档

2017年(2)

2015年(1)

2014年(1)

2013年(1)

2012年(1)

2011年(1)

2008年(7)

2007年(27)

2006年(45)

2005年(24)

我的朋友

分类:

2005-11-05 22:12:24

发错了分类,重来。过载就是无用功

过载是不好的,但有时候不得不用到,就像是无用功,但必须作。例:人驾驶汽车,目的是把人带走,但车子也必须走,汽车就是overload,尽量减少overload以体现首要目的。
上次去听intel工程师的课很受启发,怎样看待overload?
别扯远了,看看php的overload。

所有的函数都是overload,函数里的表达式都可以放在主语句中,但是为了一些目的,这些语句放在函数中,供多次使用,由表达式原子变成函数原子。
原子就是基本单位,是一个相对概念。
语句中从基本表达式看起,函数就是overload,它的过程有很多无用功,相对于主体无用的cpu,寄存器的操作。
如何又用函数又避免overload呢?

php不同于编译语言,它是解释执行,在执行中只要它不去解释部分就不会造成overload。这里有一个函数:include
主语句中要尽可能避免使用include,为什么?如果硬盘不是你考虑的问题可以认为我说的是错的,当然现如今的硬件性能和硬盘质量都有了很大的提高,但对于想提高性能或网站负载非常大的程序,可以往下看看。
c语言的include只在源码中有用,php不同,在运行版本中,每一个include都需要去把文件打开运行,也许有时候系统会缓存掉,但总会有去包含那个文件的时候,这个过程是overload的。
但有时候include也是有用的:php会去解析主线程序,而非主线程序它是不会去解析的,在进行错误处理的时候,错误一般发生比较少,可以把错误处理放在另外文件里include,这样只有当错误发生时php才去解析错误处理程序;如果把错误处理部分放在主程序里,它会扫描语法而降低了效率。

总结一下,主运行部分尽可能减少overload,而异常处理部分通常放在inclulde类函数里
写法如下:file('abc.txt') or include('error.php');
如果把include('error.php');提到主程序,php会先去解析error.php从而降低了效率;或者写到if,switch语句里面,这样在错误发生之前,php甚至不去判断error.php文件是不是存在。条件语句也有讲究,就是把概率大的事件放在前面,else里放少发生语句。
写到这里or与else的区别应该不难理解了。具体的性能差异有待测试
另外经测试,include要比~_once,require,~_once 快,但没有readfile快,怎么用看环境了。

 
阅读(921) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~