如何定义程序的要求

Mar*_*con 7 java hardware requirements specifications

有没有简单,便宜(不需要在许多硬件配置上测试程序)和无痛方法来定义硬件要求(如CPU,RAM内存等),这些都需要运行我自己的程序?该怎么做?

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

Hul*_*ulk 4

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

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

如果不了解很多用例,通常也很难定义“可接受的性能”的标准。

如果有可用的资源,许多程序会使用更多的资源,但也可以使用更少的资源。

例如,考虑一个使用大小为 a 的线程池的程序,该线程池的大小基于 CPU 核心的数量。当在具有更多内核的 CPU 上运行时,可以并行完成更多工作,但同时由于线程创建、同步和结果聚合而导致的开销也会增加。其影响与 CPU 数量呈非线性关系,很大程度上取决于实际程序和数据。同样,减少可用内存的影响范围从可能对某些输入抛出 OutOfMemory-Errors(但可能不会对其他输入)到只是更频繁地运行 GC(其影响取决于GC 策略,从明显的冻结到只是 CPU 负载多一点)。

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

  • 基本上,您只能测试和测量 - 您无法轻松预测不同硬件上的性能。 (2认同)