是否有任何简单,便宜(不需要在许多硬件配置上测试程序)和无痛方法来定义硬件要求(如CPU,RAM内存等),这些都需要运行我自己的程序?应该怎么做?
我有一个非常耗费资源的程序用Java编写,我不知道如何定义硬件规范,这足以顺利运行这个应用程序。
答案 0 :(得分:4)
不,我不认为有任何普遍适用的方法来确定不涉及对某些指定参考硬件进行测试的最低要求。
您可以通过使用某种虚拟机找到一些限制 - 修改某些VM的参数比修改硬件更容易。但是主机和VM之间的交互产生的工件可能会影响您的结果。
很难确定"可接受性能的标准"一般情况下,我不了解很多用例。
许多程序如果可用,将使用更多资源,但也可以少花钱。
例如,考虑使用基于CPU核心数量的大小为a的线程池的程序。在具有更多内核的CPU上运行时,可以并行完成更多工作,但同时由于线程创建而导致的开销增加,同步和结果聚合也会增加。效果在CPU数量上是非线性的,并且很大程度上取决于实际的程序和数据。类似地,减少可用内存范围的影响可能会导致某些输入(但可能不会针对其他输入)的OutOfMemory-Errors更频繁地运行GC( 的影响取决于GC策略,从明显的冻结到更多的CPU负载)。
所有这一切都没有考虑到程序通常不会孤立存在 - 它们在操作系统上与其他也消耗资源的任务并行运行。