软件开发人员如何设法知道他们的软件是否会在他们开发的目标硬件上运行?今天,许多开发人员在机器上的工作比预期的平台快得多。当他们越界时,他们会用什么样的工具来理解?
我是从这样的角度来问的,例如,在GNU/Linux环境中,您在现代x86上开发算法,但是目标平台是一个慢得多的平台,仍然在GNU/Linux中。
发布于 2015-01-24 05:53:27
理想情况下,在我的世界里,应该有一个工具来对平台进行基准测试,然后是一个运行程序的工具来获取一些数据,这样您就可以比较和理解您以后将使用的平台。
没有这样的工具。
甚至没有一个方法可以遵循。
您能做的最好的事情就是根据在不同平台上运行的应用程序的性能来推断。即使这样也是不可靠的。
基本上,应用程序的性能将取决于大量复杂的平台参数,以及(在某些情况下)平台与应用程序之间的复杂交互--细粒度行为。它太复杂了,无法建模。
(根据应用程序的性质,参数可以包括CPU时钟速度、CPU芯片组、核数、内存大小、内存结构、内存速度、I/O系统带宽、网络接口、显卡、硬盘驱动器控制器和设备等等。数百种不同的硬件和软件特性可能是相关的.)
最好的实用建议就是试一试。如果你买不起每个候选平台的一个例子,那么在你签署购买合同之前,看看销售员是否会让你在他们的工具包上试用应用程序。如果你做不到,那就扔硬币..。
发布于 2015-01-23 23:10:22
如果您的意思是如何找到最低/推荐的系统需求,则应用程序只需在不同的机器上试用即可。
在大多数情况下,没有硬限制:如果应用程序工作在512 MB的内存中,那么它可能也可以处理511 MB的RAM (除非它显式地检查内存)。这意味着您可能有有限数量的机器可用于基准测试,并由此推断出限制。例如,如果拥有1GB RAM的机器几乎不能运行应用程序,而拥有4GB RAM的机器运行得足够好,并且平均保持1到2GB的空闲状态,那么系统的最低要求可能包括2GB内存。
请注意,基准测试和分析是精确的。例如,对性能的非功能性要求将详细指定测试硬件和负载、表示阈值和阈值百分比的毫秒数。然后,您可以在每次提交时进行自动测试,该测试要么通过要么失败,指示应用程序何时比预期的慢。谈论感情(“应用程序的这一部分对我来说很慢”)是不能接受的,因为你的客户的律师可能会断言,应用程序的速度仍然不够快,而你在过去的两个月里一直在优化它,发现它的速度非常快。
当涉及到最低/推荐的系统需求时,很少需要这样的精度。写下系统需求的人确实可以简单地在多台机器上测试应用程序,并将其快速/缓慢的感觉作为唯一的标准。另一方面,如果合同规定应用程序应该运行在一台内存为2GB的机器上,而不是在软件需求规范中运行,这是用明确的术语编写的(见上文)。
还注意到:
我以RAM为例,但同样的逻辑适用于任何其他方面: CPU速度、硬盘上的空闲空间、这些硬盘的速度、网络带宽等等。
例如,我的一个软件产品有一个bug,我花了很多时间来调试。看起来,当Windows把硬盘放在待命状态时,当硬盘几分钟没有使用,而且他们睡了很长时间时,唤醒它们需要一段时间,这有时会在我的应用程序中触发超时。
这使得这种测试成为一项困难的任务,即使使用虚拟机也是如此。这是桌面软件的两个主要复杂性之一,另一个是软件产品必须在野外生存,即与可能安装的数以千计的其他软件产品(包括恶意软件)相处,处理不同的配置、可访问性选项、损坏的东西等。
发布于 2015-01-24 01:25:10
考虑到如何配置虚拟机所允许的硬件和内存,您可以在自己的PC上测试广泛的设置。这还允许您跨多个操作系统进行测试。
例如,PC的CPU可以是6 Ghz。当您安装虚拟PC时,您实际上可以将计算机设置为使用一定数量的虚拟PC。例如,您可以将虚拟PC设置为2.5GHz运行,并测试游戏是否运行。当你发现游戏不能正常运行时,比如2 2ghz。如果运行良好,那么这将是您对该硬件的最低规格说明。
我已经从stackexchange的Justin获得了下面的信息。类似问题的网站网址是如何确定最低系统要求?,以下所有信息都直接来自贾斯汀·凯夫2011年,未经编辑。
通常,最低要求是通过查看目标市场客户实际用于所涉产品的系统类型来确定的,并选择一些不疏远目标客户的合理界限,这是QA部门可以用最少的额外麻烦来测试的。
例如,如果您期望大多数客户将您的产品安装在相对较新的桌面计算机上,您可能会环顾四周,发现几乎所有用于家庭的低端桌面计算机都将配备2GB内存。因此,最近的一台计算机很可能至少有1GB的内存,即使它是几年前的。如果很少有客户希望使用一台只有512 MB RAM的机器,这些销售收入可能会被支持请求所抵消(旧机器可能会有许多其他问题和不兼容,这些问题和不兼容会导致问题,并产生比其他客户更多的求助电话)。因此,避免向这些客户进行销售,很可能会更有利可图。
https://softwareengineering.stackexchange.com/questions/270968
复制相似问题