首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -可以实例化太多的对象吗?

PHP -可以实例化太多的对象吗?
EN

Stack Overflow用户
提问于 2014-03-19 12:14:34
回答 3查看 1.2K关注 0票数 0

我有一个PHP程序,要求我实例化1800个对象,每个对象与填充历史数据的7-10个数组相关联(每个数组大约有500个记录),.This程序每5分钟由cron运行,而不是由用户运行。

无论如何,这个程序的设计者说一次实例化1800个对象是必需的,而不是我们可以改变的东西。我的问题是,仅仅实例化这么多对象是否是一种“代码气味”,如果内存中有这么多数据(由总共9,000,000条记录组成的数组),那么PHP将很难处理(假设主机上有足够的内存)。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-19 12:57:54

类和对象大多是用来组织代码的概念工具,其逻辑方式或多或少适用于现实世界中的“事物”。计算机在执行按过程编写的代码与面向对象的代码时没有显着差异。与以最优的过程方式编写的代码相比,OO代码可能会增加一些开销,但您几乎不会注意到这种差异。1800个对象可以在毫秒内反复创建和销毁。它们本身并不是一个问题。

问题是:用面向对象的方式编写它对代码组织有很大帮助吗?如果做得好,很可能是的。有没有其他实际的方法可以用一种在执行上大大加快的方式来编写同样的算法呢?这另一种方式是否具有逻辑结构、可理解性和可维护性?代码级别质量的差异是否值得性能上的差异?它的1800颗物体真的太慢了吗?对象是瓶颈(可能:否)还是整体算法和接近瓶颈?

换句话说:没有理由担心1800个对象,除非您有明确的迹象表明它们是一个瓶颈,而它们本身可能并不存在。在没有对象包装器的情况下将相同的数据存储在内存中通常不会显著减少任何资源的使用。

票数 2
EN

Stack Overflow用户

发布于 2014-03-19 12:27:05

作为一个应用程序,初始化所有这些对象以使您的系统运行是缓慢的。现在,我知道了为什么要像以前那样这样做--如果要进行查找,我将加载一个查找对象,以避免访问DB。

但是,每个数组有500个记录的1800个对象--这相当沉重,并且不符合触及数据库的目的。我知道内存将可用,但考虑到这是一个负荷没有紧缩-我不确定5分钟的cron是否会完成。

我建议使用分析器对此进行基准测试,以查看所使用的内存以及运行该内存所需的时间。

票数 0
EN

Stack Overflow用户

发布于 2014-03-19 12:32:32

对象本身的数量没有(实际相关的)限制。只要有足够的物理内存,就可以始终增加记忆极限。但是,从体系结构的角度来看,将所有这些都保存在RAM中用于整个执行时间可能是非常不明智的,而实际上并不需要。由于PHP数组具有很高的动态性,因此它的性能可能会受到很大的影响。然而,没有任何细节或分析,就不可能给你一个明确的答案。

但不可否认的是,需要这么多的对象似乎是相当奇怪的。DBMS可能是处理此数据量的另一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22505498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档