1、你在循环中实例化User就已经很不公平了
2、User把传入的数组拆开成3个属性,这一点在过程化程序中没有体现出来
3、在循环中直接使用echo将造成很大误差
2、User把传入的数组拆开成3个属性,这一点在过程化程序中没有体现出来
3、在循环中直接使用echo将造成很大误差
解决方案 »
- 有没有人用过Universal Feed Parser?这里有个问题
- 求高手指点:访问论坛文章 自动出现其他网站
- php 5.2.17安装过程中Apache configuration direcotry: 路径填什么???
- php有没有得到一个类的所有的属性的函数?包括private和protected的
- 一个count语句,不知道怎么写了。。。
- 请问登陆后跳回之前浏览的页面是怎么做到的
- php中的mail函数问题
- 请教各位,如何利用IE的结构化图像控件绘图!??
- 如何建立多层目录?高手们帮帮忙!
- 求助:怎样将lotus notes数据导入到wysql里去?
- session文件产生太多,怎么办?
- 如何判断给用户发送的邮件是否接收到?
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我没作过大的网站,这个差距可以不考虑吗?
不要为了面向对象而使用对象,
----------------------------------就上面的例子您认为那种方式比较合理
$this->setId($array['id']);
....
应该直接向属性赋值而不应该调用另外的方法
否则面向过程的代码$user['id'] = $i;也应通过函数赋值
这样才公允当然使用面向过程要比面向对象要少一些执行时间的
但是面向对象可以带来比面向过程更多的好处,你也不能视而不见的
分别连续访问10000次用时:
test.php 117049豪秒
test2.php 72354豪秒我对这个结果持怀疑态度,老问题了,衡量页面性能不是光靠执行时间衡量,要靠qps(每秒能处理的请求数)
你有没有考虑并发,有没有测量服务器内存和cpu占用?磁盘负载?“有人说我不要用java的东西往php上套,这个说法有道理吗”
有道理的,php代码一般是作为最终代码运行的,没有别的工具再为它优化了(别跟我提zend)
java的执行过程复杂一些,其中应该有优化的步骤
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对它有增强