1、你在循环中实例化User就已经很不公平了
2、User把传入的数组拆开成3个属性,这一点在过程化程序中没有体现出来
3、在循环中直接使用echo将造成很大误差

解决方案 »

  1.   

    1、你在循环中实例化User就已经很不公平了
    2、User把传入的数组拆开成3个属性,这一点在过程化程序中没有体现出来
    3、在循环中直接使用echo将造成很大误差-------------------------------------------------
    修改
    test.php
    <?
        require_once("User.class.php");
        require_once("ArrayList.class.php");    $list = new ArrayList;
        $user = new User;
        for ($i = 0; $i < 100; $i++) {
          $user->fill(array("id" => $i,"userName" => "qqqqq", "password" => "qqqqq"));
          $list->add($user);
       }
       for ($i = 0; $i < $list->size(); $i++) {
          $user = $list->get($i);
       }
    ?>test2.php
    <?
        require_once("User.class.php");
        require_once("ArrayList.class.php");    $list = array();
    for ($i = 0; $i < 100; $i++) {
    $user['id'] = $i;
    $user['userName'] = "qqqqq";
    $user['password'] = "qqqqq";
        $list[$i] = $user;
    }
    for ($i = 0; $i < count($list); $i++) {
        $user = $list[$i];
    }
    ?>
    test.php :98732
    test2.php:71222
    相差:27510我没作过大的网站,这个差距可以不考虑吗?
      

  2.   

    有人说我不要用java的东西往php上套,这个说法有道理吗
      

  3.   

    回复人: ice_berg16(寻梦的稻草人) ( ) 信誉:125  2005-12-28 13:16:00  得分: 0  
     
     
       不要为了面向对象而使用对象,  
     
    ----------------------------------就上面的例子您认为那种方式比较合理
      

  4.   

    WEB系统,安全+速度 是最重要的
      

  5.   

    对不起!我说的第一条是错误的,确实是要要计算实例化类的时间不过在fill方法中的
    $this->setId($array['id']);
    ....
    应该直接向属性赋值而不应该调用另外的方法
    否则面向过程的代码$user['id'] = $i;也应通过函数赋值
    这样才公允当然使用面向过程要比面向对象要少一些执行时间的
    但是面向对象可以带来比面向过程更多的好处,你也不能视而不见的
      

  6.   

    实验结果:
    分别连续访问10000次用时:
    test.php   117049豪秒
    test2.php  72354豪秒我对这个结果持怀疑态度,老问题了,衡量页面性能不是光靠执行时间衡量,要靠qps(每秒能处理的请求数)
    你有没有考虑并发,有没有测量服务器内存和cpu占用?磁盘负载?“有人说我不要用java的东西往php上套,这个说法有道理吗”
    有道理的,php代码一般是作为最终代码运行的,没有别的工具再为它优化了(别跟我提zend)
    java的执行过程复杂一些,其中应该有优化的步骤
      

  7.   

    我测试的结果:(因为机子慢,循环次数改为1000)PHP Version 5.0.5
    Apache 2.0
    windows 2000 Servertest2.php
    1 耗时:39687
    2 耗时:40469
    3 耗时:36484
    4 耗时:37796
    5 耗时:36594test.php
    1 耗时:46703
    2 耗时:44922
    3 耗时:46140
    4 耗时:45672
    5 耗时:45906使用OOP做程序是感觉有些慢
    但做网站用全静态就无所谓了,
    牺牲一些效率,换来更好的可扩展性,代码复用,一般是值得的做大型应用,OOP可以降低复杂度
    使用OOP是趋势,PHP5对它有增强
      

  8.   

    OO的优点很明显。速度上看你怎么要求了。决不要为了OO而OO。