Сегодня мой коллега заметил, что при добавлении десятичного места к индикатору прогресса происходит впечатление, что программа работает быстрее, чем без. (т.е. вместо 1,2,3... это показывает 1, 1.2, 1.4, 1.6,...) Я проверил его, и я был удивлен, что у меня такое же впечатление, хотя я знал, что это подделка.
Это заставляет меня задаться вопросом: Какие еще существуют вещи для создания впечатления от быстрого приложения?
Конечно, лучший способ - сделать приложение быстрее, но с алгоритмической точки зрения часто вы не можете много сделать. Кроме того, я думаю, что сделать пользователя менее расстроенным - это хорошо, хотя это более или менее психологический трюк.
Ответ 1
Этот эффект может быть очень драматичным: делать относительно большие объемы работы, чтобы дать пользователям правильное и часто обновляемое состояние прогресса, может, конечно, замедлить фактическое время работы приложения (обновления экрана, необходимые для расчета вычисления вычисления и т.д.), в то же время предоставляя пользователю ощущение, что требуется меньше времени.
Некоторые из вещей, которые вы могли бы сделать в GUI:
- убедитесь, что ваше приложение остается отзывчивым (изменение размеров форм возможно, возможно, кнопка отмены для операции?), когда происходит фоновая обработка.
- быть очень последовательным при отображении сообщений о состоянии/курсорах песочных часов во всем приложении
- если у вас что-то обновляется во время операции, убедитесь, что он часто обновляется (например, почти смехотворное отображение имен файлов и разделов реестра во время установки) или убедитесь, что чтобы сделать это для пользователей, которым нравится это поведение
Ответ 2
Представьте сначала некоторые промежуточные, интересные результаты. "Мы нашли 2 359 zetuyls, соответствующих вашему запросу, мы просто вычисляем их будущую ценность".
Я видел, что системы бронирования транспорта делают это довольно хорошо.
Ответ 3
Отображение сведений (например, имена файлов, копируемых в процессе установки) часто может привести к тому, что все выглядит так, как будто они идут быстрее, потому что постоянная заметная активность (в отличие от медленно прогревающей полосы хода).
Если ваш алгоритм таков, что он генерирует список результатов, и у вас есть способ отображения результатов по мере их создания (в отличие от всех сразу в конце), сделайте так - чем раньше пользователь получит что-то иначе смотреть, кроме прядильщика, тем лучше.
Ответ 4
Разрешить пользователю делать что-то еще, пока ваше приложение обрабатывает данные или ожидает результата. В области приложения вы можете позволить выполнить некоторую доработку поискового запроса или собрать информацию для подготовки следующих шагов. Или просто представите какую-то другую "работу", необходимую для выполнения, или просто некоторые подсказки, документацию, статистику, развлечения.
Ответ 5
Используйте один из этих анимированных индикаторов выполнения, которые выглядят так, будто они что-то делают, даже если они не прогрессируют. Кроме того, как сказал peSHIr - распечатайте каждое имя файла, которое вы скопируете и обновите его очень быстро - вы можете даже подделать его путем циклического перемещения по большому массиву строк N раз в секунду.
Ответ 6
Я где-то читал, что, если процесс, похоже, ускоряется, он, кажется, быстрее, чем когда он прогрессирует неуклонно. Я не могу найти ссылку прямо сейчас, но ее нужно просто реализовать.
(10 минут спустя...)
Еще один взгляд вниз по дорожке Google выявил следующие ссылки:
http://www.azarask.in/blog/post/hacking-memory/
http://blogs.msdn.com/time/
Ответ 7
Вот статья о "Выражение времени в пользовательском интерфейсе" и пользовательское восприятие времени. Я не знаю, является ли это именно то, что вы ожидаете от ответа, но это определенно стоит прочитать.
Ответ 8
Добавить спящий поток в критических точках. С каждой последующей версией уменьшите задержку.