框架资源消耗分析

作者 : admin 于 2008年12月03日, 22:42:09
2008
12-3

简单使用了下CI框架,发现了不少技巧:在 Controller类中实例化了好多的类

  1. function _ci_initialize()
  2. {
  3. // Assign all the class objects that were instantiated by the
  4. // front controller to local class variables so that CI can be
  5. // run as one big super object.
  6. $classes = array(
  7. 'config' => 'Config',
  8. 'input' => 'Input',
  9. 'benchmark' => 'Benchmark',
  10. 'uri' => 'URI',
  11. 'output' => 'Output',
  12. 'lang' => 'Language',
  13. 'router' => 'Router'
  14. );
  15. foreach ($classes as $var => $class)
  16. {
  17. $this->$var =& load_class($class);
  18. }
  19.  
  20. // In PHP 5 the Loader class is run as a discreet
  21. // class.  In PHP 4 it extends the Controller
  22. if (floor(phpversion()) >= 5)
  23. {
  24. $this->load =& load_class('Loader');
  25. $this->load->_ci_autoloader();
  26. }
  27. else
  28. {
  29. $this->_ci_autoloader();
  30. // sync up the objects since PHP4 was working from a copy
  31. foreach (array_keys(get_object_vars($this)) as $attribute)
  32. {
  33. if (is_object($this->$attribute))
  34. {
  35. $this->load->$attribute =& $this->$attribute;
  36. }
  37. }
  38. }

然后在默认welcome的模型里print_r($this),那是一个密密麻麻阿,无数的实例化数据摆在这里,估计内存CPU消耗也是惊人。
当然,作者并不是没有解决这些问题,所有的类在实例化之后使用static的方式常驻内存中,在第一次加载后,响应时间明显缩短,我本地测试是否默认实例化如此多的对象速度没有明显的差别。
对于原来我写程序,其实是有洁癖的,或者是心理障碍,就是像写C一样仔细考虑每个变量和每个方法,计算操作复杂度,其实对于整个系统开发和PHP这们语言来说,这么开发其实是杞人忧天,因为PHP本身就可以处理这些问题,比如static方法,一些缓存。
在进行各种测试之后,我的类库居然也默认加载了一些方法,只是应用在小网站中。
对于大型网站,还是要充分考虑效率性能的问题。

框架开发的两个主方向

作者 : admin 于 2008年12月02日, 13:50:28
2008
12-2

最近一直在研究框架,翻阅了各大框架结构,最后总结出两点:性能和接口规范。
1、接口规范
框架的一大意义在于整合类库和资源,使用统一的接口和统一的方式进行调用,统一的接口又更加方便其他资源的整合,模块化的管理更容易对代码进行管理。这样,可以使得不同的开发人员形成一致的风格进行分工协作。
2、效率
框架在整合类库,判断路由的时候,毕竟消耗很多冗余操作。太多的类库加载也将耗费很多的内存和CPU,因此,框架开发的另一个要点就是要降低操作复杂性,降低内存消耗,在这个基础上有可优化性。

总结到这里,晚上继续玩命……

像写C一样写PHP

作者 : admin 于 2008年06月19日, 23:31:36
2008
06-19

除了咱写PHP的,好多程序员还是或多或少看不起PHPer,php的优点就是随意,因此,一个稍有编程基础的人也能很快上手去写一些应用模块。
php的随意更体现在它本身为弱类型的语言,加上php核心的智能处理很很好的报错机制,一些随手写出的程序也能但当一部分任务。
时间长了,好像人们都养成了这种习惯,过多得依赖了php本身的优点,使得程序员自身一些习惯退化,而真正变成的‘代码工人’。
而科班出身的程序员,基本都学习过c语言编程,软件工程,数据结构之类的课程。回过头来看看我自己写的代码,那些基本的东西已经抛弃大多,而PHP作为草根语言,无章法,随意,也被我体现得淋漓尽致。
看看我自己程序暴露的问题:结构混乱,难读,效率低下,冗余,这些都是自身对PHP认识问题而造成。php本身创建了优秀的容错机制,然而并不是说我们必须依赖这些机制。而我们同样可以像写C一样来写PHP,从每个变量的初始化,数据类型的定义,变量用完后的注销,类的优化,算法的优化,都可以体现在PHP上。
再说效率,很多人说PHP效率不行,我认为这纯属认识问题。在处理大量数据的时候,PHP优点力不从心,但这样只是从片面考虑,从PHP的接口来看,PHP很容易跟其他语言进行对接,C,C++,JAVA……,当然,在一些复杂运算上,我们完全可以交给其他语言来做,通过丰富的接口来传递数据。
任何语言都不是完美的,我们只是在最能体现它优势的地方来用他。PHP的优势在于快速构建WEB应用系统,简单,上手,如果我们能把写C的习惯应用到做PHP上,那PHPer绝对不能成为草根。