Answers:
尽管@jwenting提出了一些要点,但我还是不同意总体评估。
用户通常不会注意到性能的微小改进。
这样,我可以同意。
我不同意的地方围绕此声明:
大多数面向最终用户的应用程序将大部分时间都花在等待用户输入上。
现在,在您上下跳动之前,我也同意这一说法!但是,该声明强调了一个事实,即那些不充分了解用户如何真正理解系统的人经常忽略这一事实。
用户将不得不等待加载时注意到应用程序运行缓慢。用户在输入数据之间必须暂停程序时会注意到它。
当用户中断与系统的自然而流畅的交互时,软件性能对于用户而言是显而易见的。
用户只有在系统运行良好且不会阻碍用户使用时,才会注意到系统性能。
某些性能增强并未被视为性能。客户只会注意到系统“感觉”更好。
潜意识比潜意识更快地工作。我们的大脑经过编程以提供即时反馈,并且在面对一系列任务时,我们需要一个接一个地搅拌。反馈中的轻微暂停会导致此过程脱节,从而增加压力水平。如果反馈中有暂停,人们将自动双击按钮,而无需考虑它。
通常情况下,性能改进是如此之小,以至于客户从未直接注意到。充其量,在使用过程中,他们的应用程序流程可能会稍微流畅一些,但不足以引起人们的注意。
请记住,大多数面向最终用户的应用程序会花费大部分时间等待用户输入,而不是处理该输入。因此,即使您将处理该按钮单击并更新屏幕所需的100毫秒减少了10%,用户也几乎不会注意到,因为在此之后的10000毫秒内,她将不会对该更新后的屏幕进行任何操作。
会注意到的是sysadmin,他看到一个过去需要2个小时才能完成的批处理作业现在可以在90分钟内完成,但是他只会注意到,如果他必须等待结果并且很生气,更快的返回会中途中断他通过他的电影:)
我只是想跳进这里,并提供一个不寻常的情况,...
* 客户对性能表现特别关注,并注意每一个小小的变化!。
在我的领域中,我们涵盖了产品渲染,这些渲染往往会被客户自己的性能进行分析。与次要版本相比,性能下降2%可以等同于以“错误报告”的形式报告的速度下降。
论坛线程通常始于客户根据软件的各种版本对他们的场景进行基准测试,而客户实际上比开发人员自己对基准进行更多的基准测试。“在X版中渲染此场景需要1小时40分钟。现在在Y版中需要32分钟。”
“此场景在X版本中加载需要18分钟,而在Y版本中则需要4分钟。”
当应用优化时,它们非常感激,仅此一项就足以保证购买新的,非常昂贵的软件升级,有时仅进行适度的改进(例如减少10%的时间)。
在某些较大的环境中,由于某些较大的工作室使用渲染场,他们必须全天为数百台机器进行渲染,因此,当产品加速运行时,它还可以为客户节省大量金钱。加快整个制作过程的速度(当艺术家以更高的生产率创造艺术而不是等待其渲染时,甚至可能会产生更好的结果)。
因此,存在这样的领域,在这些领域中,客户真正,真正地,真正地注意到了-有时甚至比开发人员本身还要注意,这超出了UI交互概念,而交互概念更多地是关于延迟而不是吞吐量。
程序员多长时间需要一次额外的工作来“编写”性能分析,而受众不是程序员,而是经理和客户?
就我们而言,几乎所有次要版本都始终存在。速度是最主要的卖点之一,即使是最技术性的基准测试和性能分析也确实受到客户和经理的赞赏和理解。客户的感知通常就像狂暴的狼一样,渴望进行更多的优化,并试图向开发人员建议如何使事情发展得更快。在这种情况下,实际上需要纪律来抵制一些客户进一步优化的冲动,并专注于其他指标,例如可维护性和功能增强。
程序员多长时间需要一次额外的工作来“编写”性能分析,而受众不是程序员,而是经理和客户?
我相信这取决于行业。在防御合同的古怪世界中,我们经常这样做。我们有使产品以某些方式运行的特定要求-这些性能指标并不总是与最终用户体验到的东西直接相关。我们通常会进行自己的测试,以查看产品触底的地方。两种测试都记录在报告中,并仔细考虑了其含义。
就是说,我不确定在客户和部署基础不太专业的情况下(即商业世界)它是否成立。考虑到我们确实购买了需要满足性能规格的COTS,我可以说有些采购商确实要求这样的性能规格,但是根据我的经验,我去过的COTS公司并不总是有那么多的性能分析白皮书可用。这似乎取决于行业,公司规模和竞争性质。啊...资本主义。
Thread.Sleep(1000); //pretend this does more than change a 0 to a 1 in the database.