是否有任何简单,便宜(不需要在许多硬件配置上测试程序)和简便的方法来定义运行我自己的程序所需的硬件要求(例如CPU,RAM内存等)?应该怎么做?

我有一个用Java编写的非常耗资源的程序,而且我不知道如何定义足以顺利运行此应用程序的硬件规范。

最佳答案

不,我认为没有任何普遍适用的方法可以确定不涉及在某些指定引用硬件上进行测试的最低要求。

通过使用某种类型的虚拟机,您也许可以找到一些限制-修改某些VM的参数比修改硬件更容易。但是,主机和VM之间的交互会生成一些工件,这些工件可能会影响您的结果。

通常,在不了解很多用例的情况下,很难定义“可接受的性能”的标准。

如果有很多程序,它们将使用更多的资源,但相处得更少。

例如,考虑一个使用线程池的程序,该线程池的大小基于CPU内核数。当在具有更多内核的CPU上运行时,可以并行执行更多工作,但是同时由于线程创建,结果的同步和聚集而增加了开销。影响在CPU数量上是非线性的,并且在很大程度上取决于实际的程序和数据。同样,减少可用内存的影响范围从可能为某些输入引发OutOfMemory-Errors(可能对其他输入可能不会引发)到更频繁地运行GC(其影响取决于GC策略,范围从明显的卡住到稍微多一点CPU负载)。

所有这些甚至都没有考虑到程序通常不是孤立存在的-它们在操作系统上与其他消耗资源的任务并行运行。

关于java - 如何定义程序要求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38567138/

10-12 00:20
查看更多