【问题标题】:Does initiating a large class on a page slow it down?在页面上启动大类会减慢速度吗?
【发布时间】:2012-01-18 18:25:46
【问题描述】:

我正在编写一个类,最终可能会有大约 3000 行代码。

我想知道的很简单,在每个页面的顶部启动这个类会减慢页面的运行时间,即使只使用一个/两个对象方法?如果每天访问数千次,是否会给我的服务器带来更大的压力?

如果是这样,我是否应该考虑创建扩展来处理每个方法,而不是将整个类放在一个文件中?

已编辑

首先,为了纠正 KingCrunch 和 Kenaniah,这个类是为我的 API 准备的,这意味着它拥有很多用于检索要显示在网站和我们的 iPhone 应用程序以及我们整个 Facebook 应用程序上的数据的函数。所以考虑到我们网站的大小和功能,3000 行是非常小的,更不用说这些行中有超过 700 行是 cmets。所以我可以向你保证没有设计缺陷,尽管可能存在结构缺陷,这就是我问这个问题的原因......

构造函数只是将默认值设置为定义的变量,仅此而已。

我已经从头开始完全重写了这个文件,所以没有旧代码,我很确定类中的方法尽可能高效。

我一直在监控我的服务器使用情况等,以及使用 apache ab 工具模拟大量流量,虽然我的内存使用量猛增,但似乎还不错。

【问题讨论】:

  • 3000 LOC 级别听起来更像是设计缺陷,而不是性能问题......
  • 简而言之,是的,它会减慢速度,因为它必须初始化该类。不过,它可能并没有你想象的那么糟糕。听起来您可能想看看这个相关问题:stackoverflow.com/questions/1424382/…
  • 简短回答:是的。长答案:有无限多的因素会减慢页面。您在 3000 行代码中丢失的内容可以在其他地方弥补。
  • 3000行代码?你需要重构,因为你肯定做错了什么。
  • 你为什么不把它分解成小块呢?取出常用功能并创建一个新类。如果它们是依赖的,继承将有所帮助。由于您只使用了几种方法,因此最好仔细查看并重新设计您的类

标签: php class lines-of-code


【解决方案1】:

将在每个页面的顶部启动此类会减慢页面的运行时间

它会添加到运行时吗?是的。当然。没有什么是免费的。解析的每一行代码都有一些小的开销(但是您可以使用像 APC 这样的操作码缓存来消除大部分开销)。但是,我们说的可能是亚毫秒级的开销。唯一确定的方法是自己分析它。

如果每天访问数千次,是否会给我的服务器带来更大的压力?

根据个人经验,没有。但是,再次描述和衡量自己。您应该监控服务器上的基本性能指标(CPU 使用率、平均负载等)。部署您的更改,并观察您的指标。

【讨论】:

  • 对于第一部分,这取决于他是否需要 3k 行,并考虑将其拆分为多个类,他最终会一个一个地加载它们,这会降低他的性能。跨度>
  • 是的,包括十个 300 行文件比包括一个 3000 行文件(有点)慢。同样,实际的挂壁时间差异可能非常微不足道。
  • 但是通过自动加载,可能不需要为每个请求加载每个“子类”,这也是使用 APC 的一个很好的理由
【解决方案2】:

不,实例化由大量 LOC 组成的类不会自动使其变慢。

也就是说,除非你在构造函数中做某事,但这取决于你在那里做什么,而不是类有多大。

【讨论】:

    【解决方案3】:

    不,实际上它比将其拆分为多个文件要快。

    唯一的问题是,这通常会导致一大块代码,并且更难进行修改。

    编辑:如果所有的行都是有用的,它会更快。如果你有很多旧代码,你可能会考虑清理

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多