我之前问过 aqbout 时区和日期/时间,但这是一个更具体的问题,更多关于 PHP 中的对象。
<?PHP
//set the user's time zone on page load
date_default_timezone_set("America/Los_Angeles");
//convert the timestamp from DB into the user's time
$timestamp = '2008-05-01 13:44:19'; //this would normally be returned from mysql
echo ConvertDateTime($timestamp, "America/Los_Angeles");
//here is the function to convert it
function ConvertDateTime($timeString, $timeZone)
{
if ( $d = new DateTime($timeString) ) {
$d->setTimeZone(new DateTimeZone($timeZone));
return $d->format("Y-m-d H:i:s");
}
return null;
}
?>
好吧,这对某些人来说可能是一个愚蠢的问题,但我真的对类和对象了解不多或没有太多经验,通常在一个页面上,例如我将创建 1 个数据库对象并在其上运行每个 mysql 查询具有该 1 个对象集的页面。我总是认为更少的对象可能更好,但我在这个网站上读到,与 1 个对象相比,拥有数百个对象的速度和使用的资源相同,不确定这是否属实。
我的问题是,在上面的函数中,您可以看到每次调用函数时都会创建一个新的 DateTime 对象,在我的情况下,在某些页面上可能会创建 100 次。那么我应该像使用 singleton 一样使用,甚至我可以在设置数据库对象的 header 中设置 1 次 dattim 对象,还是应该让函数创建大量对象?
请解释一下优点和缺点以及我可能应该做的事情,感谢任何建议,有些人可能会说我正在预优化,好吧,我已经优化当前网站两年多了,以达到我想要的效果,现在我正在重建同一个网站,所以我知道预期的用户负载和内容,我宁愿现在而不是稍后修复类似的问题。
最佳答案
should I use like a singlton
单例并非没有问题——例如,它们常常使(自动化)测试变得困难。这是它们较少受到“大”框架欢迎的原因之一(我正在考虑 Zend Framework 和 Symfony,它们正在减少下一个主要版本的单例数量)
I could set a dattim object 1 time in the header
使用全局变量/对象也会产生副作用;如果一个变量意味着“本地”,那么它应该是本地的——代码的可读性和理解它的能力通常比毫秒的一小部分更重要。
对于极端和特定的情况,唯一的解决方案是分析:您希望您的脚本/应用程序运行得更快吗?使用更少的CPU?
那么,首先,对其进行概要分析!它将帮助识别瓶颈,并向您展示应该集中精力的内容。
很可能您有很多可以最快优化的东西(即需要更少的时间来思考、编码和测试),并且会给您带来更高的性能提升。 p>
最后,你总是必须做出选择:
- 尽可能最好的表演
- 开发/优化某些内容所需的时间
- 维护它需要时间;包括除您之外的其他人。
而且,通常情况下,一台新的、更强大的服务器(或第二台)最终花费不到几周的时间进行优化,只获得 5% 的效果!
(注意我并没有说你不应该优化;但你不应该过度优化。)
关于php - PHP 中的对象 : More or Less is better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002313/