如何在重写或硬件升级之间做出决定?

时间:2009-09-01 18:44:47

标签: performance optimization hardware rewrite

如果你的工作产品很慢而且内存很饿。

这两个选项之间的决定是什么?为什么?

  1. 如果您购买的“5”位数高,可能是6位数的好服务器,该产品将完美运作。
  2. 您拥有更改资源的来源和资源,它会花费大约相同的选项1来修复问题,但会让您获得4位数的服务器。

13 个答案:

答案 0 :(得分:8)

我投票2,仅仅是因为从现在起一年后,当您的产品使用频率更高,数据更多,需要更多资源时,您不会再想购买更大的服务器了。

而且可能会出现无法获得更大硬件的时间。

答案 1 :(得分:3)

我会选择#1,因为我可以向你保证,#2实际上会花费更长时间,成本至少是你认为的5倍: - )

答案 2 :(得分:3)

对其进行配置并重写或更新较慢的部分(瓶颈)。不要重写整个代码库。在解决您的挑战时,这种方法可以让您获得最佳效果。

答案 3 :(得分:2)

几个问题:

  • 如果您需要更强大的服务器,一段时间后会发生什么情况,因为您的应用程序会吸引更多用户?
    • 会发生这种情况吗?
  • 重新编写应用程序需要多少钱?

如果回答第一个问题是“新服务器在一年内不够强大”,则必须优化您的应用程序。

如果对“费用多少”的回答真的很多......好吧,我让你猜猜我正在喋喋不休;-)所有这些都取决于前一点的答案。

如果不知道这个问题的答案,那将很难帮助你。


我的建议是:尽可能地优化你,而不是重写 - 这至少会让你有时间;那么你就能在没有匆忙的情况下思考。

这将允许您进行更好的重写,并且生成的应用程序将更好 - 并且可能会更好地扩展,如果您认为您将拥有更多用户,这非常重要。

所以:

  • 优化
  • 花一些时间思考
  • 重写,考虑优化,扩展和维护

答案 4 :(得分:2)

正如你暗示成本是相同的,接下来要考虑的是交货时间。

1可能在比2更短的时间内实施(如果建筑物2的成本是5或6位数,那么这将是一个重要时间。)

早些时候获得这个项目也会有好处。

如果您希望将来增强系统并且使用寿命长,那么改进产品可以降低维护成本。

答案 5 :(得分:2)

它必须是2号,因为你只是在没钱之前推迟任何问题。

说,瓶颈是什么?快速修复:

  • 磁盘配置(例如SCSI 15K RAID 10,更加强大的控制器)
  • 更多内存(总是适合数据库框)
  • 64位操作系统/重新编译
  • 添加处理器(可能不是您的代码,而是在盒子上运行其他任务)

答案 6 :(得分:2)

通常情况是“它取决于”。通常,企业所有者将朝着最大化利润的方向前进,但只有经过仔细的风险和影响分析。正确的决定受到许多因素的影响:

  • 什么可以降低成本?一个6位数的大型机可能不比重写现有代码的6位数开发工作便宜。

  • 您需要多少改进?对于大多数CPU和内存绑定的应用程序,只要在问题上投入更多硬件,就不能指望加速超过5倍。对于某些类型的问题,编写良好的数据结构和算法可以将应用程序的运行时间提高数百万倍。

  • 什么可以降低风险?重写遗留代码是一种经过时间检验的有保证的方法,可以将新漏洞编写到现有软件中。

  • 您需要多少可扩展性?有些计算可以通过计算的一小部分可以分布在多个服务器上的方式编写,有效地允许您通过添加更多硬件来线性扩展计算。以这种方式编写软件需要仔细规划 - 如果可扩展性从一开始就不是游戏计划的一部分,那么几乎可以肯定你需要重新编写代码。

如果不了解您的个人情况,对您的问题没有好的答案。

答案 7 :(得分:1)

既然两者的价格相同(时间怎么样?)我会修复/开发(2),因为你可以更好地控制你的sw。另一方面,由于大多数程序员低估了开发时间和成本,因此及时解决问题可能是一种幻想。

答案 8 :(得分:0)

如果性能下降与问题空间成正比,则重写可能是您唯一的选择。

答案 9 :(得分:0)

硬件变化具有大部分线性优势。如果你能真正驾驭摩尔定律,那么它可能几乎指数一段时间。最终你达到非摩尔因子(如buget或冷却要求)并下降到线性。

如果做得好,重写将改变行为,而不仅仅是性能。如果您当前的软件具有几何行为(如O(n ^ 2)),那么随着您的成长,您将需要几何上更好的硬件。如果你得到线性行为(比如O(n)),你就会有更多的很多增长空间。

答案 10 :(得分:0)

如果这是一个内部应用程序,那么请选择选项1.两个选项的成本相同,但您的应用程序已就位现在。与此同时,硬件成本持续下降;很快你的5-6位服务器将成为一个4位数的服务器。

如果是您发送给用户的内容,选项2听起来更可信,但这取决于您需要多快发货,而不是您的用户愿意花多少钱在服务器设备上。

答案 11 :(得分:0)

取决于瓶颈所在。如果不先知道,我就不会做出这个决定。如果问题是设计不佳或查询写得不好,那么更快,更好的设备可能无法解决您的问题,那么您在花费整个预算之后又在哪里?

答案 12 :(得分:0)

不是黑色或白色,一两个。我认为你应该优化你发现低挂水果的地方,并购买优化困难的硬件。你不应该选择,而是找到平衡。

我倾向于选择备选方案2,部分原因是因为我觉得它很有趣,部分原因是可能会有其他好的副作用,比如更好的响应时间。

如果你可以在许多服务器上分发你的应用程序,你也应该考虑你的架构,然后你可以应付两个便宜的服务器,而不是真正昂贵的服务器。