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