今天,我的同事注意到,在进度指示器中添加小数位会导致程序运行得比没有时快的印象。(即不是 1,2,3... 它显示 1, 1.2, 1.4, 1.6, ...) 我检查了它,我很惊讶我得到了相同的印象,即使我知道它是伪造的。
这让我想知道:还有什么其他的东西可以创造快速应用程序的印象?
当然,最好的方法是让应用程序变得更快,但从算法的角度来看,您通常无能为力。此外,我认为让用户不那么沮丧是一件好事,尽管这或多或少是一种心理技巧。
今天,我的同事注意到,在进度指示器中添加小数位会导致程序运行得比没有时快的印象。(即不是 1,2,3... 它显示 1, 1.2, 1.4, 1.6, ...) 我检查了它,我很惊讶我得到了相同的印象,即使我知道它是伪造的。
这让我想知道:还有什么其他的东西可以创造快速应用程序的印象?
当然,最好的方法是让应用程序变得更快,但从算法的角度来看,您通常无能为力。此外,我认为让用户不那么沮丧是一件好事,尽管这或多或少是一种心理技巧。
这种效果可能非常显着:做相对大量的工作来为用户提供正确且经常更新的进度状态当然会减慢应用程序的实际运行时间(屏幕更新、进度显示所需的计算等),同时仍然提供用户感觉它需要更少的时间。
您可以在 GUI 中执行的一些操作:
首先展示一些中间的、有趣的结果。“我们找到了 2,359 个符合您要求的 zetuyl,我们只是在计算它们的未来价值”。
我已经看到交通预订系统很好地完成了这类事情。
显示详细信息(例如在安装过程中复制的文件的名称)通常会使事情看起来进展得更快,因为存在持续的、明显的活动(而不是缓慢爬行的进度条)。
如果您的算法能够生成结果列表,并且您可以通过某种方式在生成结果时显示结果(而不是在最后一次全部显示),那么这样做 - 用户越早看到其他内容除了微调器,更好。
允许用户在您的应用程序处理数据或等待结果时执行其他操作。在应用程序范围内,您可以允许对搜索查询进行一些细化或收集信息以准备下一步。或者只是提出一些其他必要的“工作”,或者只是一些提示、文档、统计数据、娱乐......
使用其中一个动画进度条,即使它们没有进展,它们也看起来像是在做某事。此外,正如 peSHIr 所说 - 打印您复制的每个文件名并快速更新它 - 您甚至可以通过每秒循环 N 次大型字符串数组来伪造它。
我在某处读到,如果这个过程似乎正在加速,它似乎比它以稳定的速度进展时更快。我现在找不到参考,但它应该很容易实现。
(10分钟后...)
进一步查看 Google 车道发现了以下参考资料:
http://www.azarask.in/blog/post/hacking-memory/ http://blogs.msdn.com/time/
Here is an article about "Expressing time in your UI" and user perception of time. I do not know if it is exactly what you expect as an answer, but it is definitely worth the read.
在关键点添加线程休眠。对于每个通过的版本,减少延迟。