如何提高你不拥有的代码的性能?

我们在内部有一个第三方的java应用程序,运行一个调度algorithm,这个可笑的Linux平台上。 应用程序的运行速度太慢,我们需要的负载。 我们没有代码,由于金钱原因,供应商不会对应用程序进行任何更改,因此我无法改进代码。 应用程序是单线程的,它的devise不适合并行化(所以我不能在两个盒子之间分割负载)。

我可以通过软件或硬件来提高应用程序的性能吗?

  • 获取最新版本的Java(新版本往往有性能改进)

  • 给Java更多的内存来处理 (基准,看看这是否有任何区别)

  • 测量它top做什么。 升级任何问题(更多的内存,更快的CPU,SSD)。 有些CPU在单线程工作负载下比其他CPU更好(请阅读:不要在推土机上运行; Turbo Boost可能会有所帮助)。

  • 玩其他实验JVM选项 (基准,看看这是否有任何区别)

  • 删除在这台机器上运行的任何其他应用程序(基准,看看是否有任何好处 – 没有意义浪费钱,如果没有帮助)

  • 支付供应商使其更快或给你的代码(即:给他们金钱的理由来解决这个问题)

  • 找一个替代品

  • 写你自己的选择

1)您可以改进应用程序运行的硬件。 通过查看应用程序正在使用的资源来做到这一点。 是最大的CPU,或使用所有的内存(或两者)? 如果是这样,您可以相应地添加更多的CPU电源或RAM。

2)有没有办法可以缓存应用程序的结果? 你能避免使用它吗?

否则,你可以做的不多。 如果成为一个更大的问题,你可能不得不编写自己的调度算法,或者更好的是找到一个更好的供应商。

你可以预处理输入,使应用程序有更少的工作要做?

例如,应用程序可能做的第一件事就是使用合并排序来排序要排定的作业列表。 如果预先对列表进行排序,那么应用程序的排序将无法完成。 您可能能够比应用程序更快地对列表进行排序 – 使用多个内核,提前执行等等。

在更快的电脑上运行它。 这可能是最便宜的解决方案。