【发布时间】:2012-08-02 03:36:18
【问题描述】:
这是一个相当抽象的问题,我希望它在范围内。
我的 Web 开发编码职业生涯大约有 5 个月。我发现 CPU 和存储资源之间经常存在紧张关系。简而言之,您可以少用一种,多用另一种,反之亦然(然后考虑速度)。我现在要部署我的第一个应用程序进行生产,所以这个平衡现在是真正的美元和美分的问题。事情是这样的:我真的不知道我应该寻找什么样的平衡。
这里有一些突出的例子可以说明在不同情况下要达到的平衡。
背景
我正在开发一个在文本之间有很多差异的应用程序。用户将调用包含以 html 显示的差异的页面。很多。
第一个案例
我应该在每次显示页面时运行 diff,还是应该运行 diff 一次、存储它并在每次显示页面时调用它?
第二种情况
我编写了一个总结差异的算法。它大约有 110 行代码,它使用 4 或 5 个循环和子循环。同样,我应该运行一次并存储结果,以便以后可以调用它们,还是应该在每次显示页面时运行算法?
也很想听听您对用于量化余额的最佳工具的看法。
【问题讨论】:
-
这是一个不可能肯定回答的问题。在测试服务器上部署您的应用程序并运行大量常见用例。查看您使用了多少空间与多少 CPU 时间并进行计算。我的直觉认为 CPU 时间比存储更昂贵,但直觉无法替代分析。
-
听起来它会受 CPU 限制,即它将使用比任何其他资源更多的 CPU。如果可以的话,减少你必须做的嵌套循环的数量和你通常执行的循环的数量。另外,我想说只在必要时生成差异,例如,当文本更改时。最后,存储非常便宜。从 Amazon S3 开始,它是每 GB 12.5 美分。您的里程可能会因 CPU 和内存成本而异
-
为什么很难将“很多”写成两个不同的词?
-
在编写实现之前不要担心这个问题的答案。编写一个实现,然后对其进行测试。或者,在你编写了一个实现之后,将 memcache 放在它前面。
-
我鼓励您也阅读 Greg Smith 的书 PostgreSQL 9.0 High Performance,因为它被广泛推荐给做出扩展选择和调整服务器的人们。
标签: python postgresql heroku hosting