首页 CSS PHP

面向对象还是面向过程(性能)

平日里身边的程序员,干什么都要先弄个类,做什么都说是面向对象,或者高调宣称自己MVC。面向对象三个特性:封装、继承和多态。我所能理解到的层次就是代码的重用性和方便维护。没必要屁大个项目也一个类一个类的磊起来。

小弟弄了四个php程序,对比一下面向对象还是面向过程。

第一个:

for($i=0;$i<10000;$i++){

echo ‘<h6 style=”display:none”>hello world</h6>’;}

第二个:

function e(){

echo ‘<h6 style=”display:none”>hello world</h6>’;}

for($i=0;$i<10000;$i++){e();}

第三个:

class e{

function ee(){

echo ‘<h6 style=”display:none”>hello world</h6>’;}}

for($i=0;$i<10000;$i++){

$e = new e();

$e->ee();}

第四个:

class e{

function ee(){

echo ‘<h6 style=”display:none”>hello world</h6>’;}}

class f{

function ff(){

$e = new e();

$e->ee();}}

for($i=0;$i<10000;$i++){

$f = new f();

$f->ff();}

好了,然后用了一个计时的函数,用了一个管理内存的函数计时方法网上翻到的,挺常用的。大家留着以后也能用上。

function runtime($mod=”){

static $a; //首次运行时间

static $b; //上次时间

static $str; //输出字符串

$time = explode(‘ ‘, microtime()); $curr = $time[1] . substr($time[0], 1, 7); // 1212466268.034119形式

//首次

if(!$a) {

$b = $a = $curr+0;

//$str .= ‘开始:’.$a.’秒<br/>’;

}else if($mod == ‘end’){

$str .= ‘本次: ‘.intval(($curr – $b) * 100000)/100000 . ‘<br/>’;

//$str .= ‘结束: ‘.$curr.’秒<br/>’;

$str .= ‘总运行时间:’.intval(($curr – $a) * 100000)/100000 . ‘<br/>’;

echo $str;

}else{

$str .= ‘本次: ‘.intval(($curr – $b) * 100000)/100000 . ‘<br/>’;

$b = $curr; }}

这个小函数的使用方法:

runtime();

写自己的程序

runtime(‘end’);

然后是内存查看的函数,php内置的,memory_get_usage();。

好了,具体实现:

runtime();

$ma = memory_get_usage();

echo “开始时内存:”.$ma.”<br>”;

//这里写自己的代码,就是上面那四个小段

$mb = memory_get_usage();

echo “结束时内存:”.$mb.”<br>”;

runtime(‘end’);

echo “共消耗内存:”.($mb-$ma);

运行结果:

第一个:开始时内存:73688结束时内存:75440本次: 0.03932总运行时间:0.03932共消耗内存:1752

第二个:开始时内存:74200结束时内存:75952本次: 0.06689总运行时间:0.06689共消耗内存:1752

第三个:开始时内存:75640结束时内存:77392本次: 0.03267总运行时间:0.03267共消耗内存:1752

第四个:开始时内存:77640结束时内存:79392本次: 0.07059总运行时间:0.07059共消耗内存:1752

结果很明显能看出来,所谓的类,即耗时间也耗内存。而且在没解决什么代码的重用的情况下,完全没必要赶这个时髦。或许时间有些夸张,因为小弟为了方便,用include了。

 

posted on 2012-02-05 15:37  烟雨一点尘  阅读(553)  评论(0编辑  收藏  举报

导航