面向对象还是面向过程(性能)
平日里身边的程序员,干什么都要先弄个类,做什么都说是面向对象,或者高调宣称自己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了。