[Перевод] Сравнение отклика клавиатур

habr.png

Если вы посмотрите на «игровые» клавиатуры, то многие из них продаются по цене $100 или выше на заявлениях об их быстроте. В рекламных объявлениях можно встретить такие заявления:

  • Специально разработанные клавиши, которые сокращают время регистрации нажатия
  • В 8 РАЗ БЫСТРЕЕ — скорость опроса 1000 Гц: время отклика 0,1 миллисекунды
  • Получи абсолютное преимущество над своими противниками со сверхбыстрой работой клавишных переключателей 45g и срабатыванием на 40% быстрее, чем у стандартных переключателей Cherry MX Red
  • Самая высокая в мире частота опроса 1000 Гц
  • Самая быстрая в мире игровая клавиатура, частота опроса 1000 Гц, время отклика 0,001 секунды

Несмотря на все эти заявления, я нашёл только одного человека, который публично протестировал время отклика клавиатуры — и он проверил только две клавиатуры. Вообще, по моему глубокому убеждению, если кто-то делает заявления о производительности без бенчмарков, то вероятно эти заявления не являются правдой, как непротестированный (или иным образом проверенный) программный код следует по умолчанию считать нерабочим.

Ситуация с игровыми клавиатурами во многом напоминает разговор с продавцом машин:

Продавец: Эта машина супербезопасна! У неё двенадцать подушек безопасности!
Я: Это хорошо, но как она выглядит в краш-тестах?
Продавец: Двенадцать подушек безопасности!

Конечно, у игровых клавиатур частота опроса 1000 Гц, и что из этого?

Возникает два очевидных вопроса:

  1. Какое значение имеет отклик клавиатуры?
  2. Действительно ли игровые клавиатуры быстрее обычных?


Какое значение имеет отклик клавиатуры?
Если бы вы спросили год назад, собираюсь ли я соорудить специальную установку для измерения отклика клавиатур, я бы ответил, что это глупо — и вот теперь я сижу с логическим анализатором и измеряю отклик клавиатур.

Всё это началось, потому что меня не покидало ощущение, что старые компьютеры как будто быстрее реагируют на нажатия клавиш, чем современные машины. Например, iMac G4 под macOS 9 или Apple 2 кажутся быстрее, чем моя система Kaby Lake на 4,2 ГГц. Я никогда не доверял подобным ощущениям, потому что десятилетия исследований показали, что у пользователей часто возникают ощущения, прямо противоположные реальности, так что я взял высокоскоростную камеру — и начал измерять реальную задержку между нажатием клавиши и появлением символа на экране, а также задержку в скорости реагирования курсора на движение мышкой. Как выяснилось, казавшиеся быстрыми старые компьютеры действительно оказались быстрыми, намного быстрее моего современного компьютера — у компьютеров 70-х и 80-х годов задержка между нажатием клавиши и появлением символа на экране часто находится в пределах от 30 до 50 мс без каких-либо модификаций, в то время как у современных компьютеров она часто в диапазоне от 100 до 200 мс при нажатии кнопки в консоли. Можно снизить отклик до 50 мс в хорошо оптимизированных играх с вычурной игровой конфигурацией, и есть одно необыкновенное потребительское устройство, которое легко бьёт результат 5 мкс, но у большинства других работа гораздо медленнее. У современных компьютеров сильно увеличилась пропускная способность, но время отклика выглядит не так прекрасно.

В любом случае, во время измерений у моего Kaby Lake на 4,2 ГГц была самая высокая однотредовая производительность среди всех компьютеров, которые можно купить, но время отклика хуже, чем у быстрой машины 70-х годов (примерно в 6 раз медленнее, чем Apple 2), что немного странно. Чтобы выяснить, где возникает задержка, я начал измерять время отклика клавиатуры, потому что это первая часть конвейера ввода-вывода. Я планировал оценить задержки от начала и до конца, начав с первого звена и исключив клавиатуру как реальный источник задержки. Но оказалось, что у клавиатур очень значительная задержка! Я был очень удивлён, что средняя по медиане задержка у протестированных клавиатур превышает время отклика всего конвейера Apple 2. Если вы сразу не понимаете глубину этого абсурда, учтите, что в процессоре Apple 2 всего 3500 транзисторов на частоте 1 МГц, а по оценке Atmel в современных топовых клавиатурах около 80 тыс. транзисторов на 16 МГц. Это в 20 раз больше транзисторов, которые работают на 16-кратной тактовой частоте — клавиатуры сегодня более мощные, чем сами компьютеры 70-х и 80-х годов! И всё равно средняя медианная клавиатура сегодня добавляет такую же задержку, как весь конвейер ввода-вывода, вплоть до дисплея, на быстрой машине 70-х.

Посмотрим на характеристики времени отклика некоторых клавиатур:

Клавиатура Отклик (мс) Интерфейс Игровая
Apple Magic (USB) 15 USB FS
HHKB Lite 2 20 USB FS
MS Natural 4000 20 USB
Das 3 25 USB
Logitech K120 30 USB
Unicomp Model M 30 USB FS
Pok3r Vortex 30 USB FS
Filco Majestouch 30 USB
Dell OEM 30 USB
Powerspec OEM 30 USB
Kinesis Freestyle 2 30 USB FS
Chinfai Silicone 35 USB FS
Razer Ornata Chroma 35 USB FS Да
OLKB Planck rev 4 40 USB FS
Ergodox 40 USB FS
MS Comfort 5000 40 беспроводная
Easterntimes i500 50 USB FS Да
Kinesis Advantage 50 USB FS
Genius Luxemate i200 55 USB
Topre Type Heaven 55 USB FS
Logitech K360 60 «унифицированный»


Время отклика — это время от начала перемещения нажимаемой клавиши до поступления соответствующего USB-пакета в шину USB. Числа округлены до 5 мс, чтобы избежать ложного ощущения точности. Модель Easterntimes i500 также продаётся под названием Tomoko MMC023.

В колонке «Интерфейс» указан тип соединения: USB FS соответствует протоколу USB Full-Speed, который поддерживает опрос до 1000 Гц — эта функция часто рекламируется в топовых клавиатурах. USB соответствует протоколу USB Low-Speed, который используется в большинстве клавиатур. Колонка «Игровая» указывает на то, позиционируется ли данная модель как игровая клавиатура. «Беспроводная» означает наличие какого-либо специального приёмника, а «унифицированный» — это беспроводной стандарт Logitech.

Как можно убедиться, даже на таком ограниченном наборе клавиатур разница во времени отклика составляет 45 мс. Таким образом, современный компьютер с одной из самых медленных клавиатур никак не может настолько же быстро реагировать на нажатия клавиш, как быстрая машина 70–80-х годов, потому что одна только клавиатура медленнее, чем весь конвейер ввода-вывода на тех старых компьютерах.

Так мы установили факт, что современные клавиатуры являются значимым фактором в увеличение задержки, которая произошла за последние 40 лет. Другой вопрос — действительно ли задержка современной клавиатуры значима для пользователей? Из таблицы мы видим разницу в задержке около 40 мс. Заметна ли такая разница? Давайте сравним время отклика клавиатуры и изучим некоторые эмпирические исследования по восприятию человеком.

Есть существенное количество исследований, которые говорят о том, что на очень простых задачах люди способны воспринимать задержку в 2 мс и меньше. Более того, увеличение задержки не только заметно пользователям, но и является причиной менее точного выполнения простых задач. Если хотите наглядной демонстрации, как выглядит задержка, а у вас нет старого компьютера под рукой, вот демо MSR по задержке тачскрина.

Действительно ли игровые клавиатуры быстрее обычных?
Я действительно хотел бы протестировать больше клавиатур, прежде чем делать смелые заявления, но из предварительных тестов выходит, что игровые клавиатуры ничуть не быстрее обычных клавиатур.

Для игровых клавиатур часто рекламируются функции, которые снижают время отклика, вроде подключения по USB FS и опроса 1000 Гц. Спецификации USB Low-Speed устанавливают минимальное время между пакетами 10 мс, то есть 100 Гц. Однако USB-устройства часто округляют это значение до ближайшей степени двойки и работают на 8 мс, то есть 125 Гц. С промежутком 8 мс между пакетами средняя задержка из-за необходимости ожидать следующего раунда опроса составляет 4 мс. С интервалом опроса 1 мс средняя задержка от USB-опроса составляет 0,5 мс, что даёт нам разницу в 3,5 мс. Хотя это может быть заметным увеличением задержки для быстрых клавиатур вроде Apple Magic, но ясно, что время отклика клавиатуры больше зависит от других факторов, а игровые клавиатуры из нашего теста настолько медленные, что их не спасает экономия 3,5 мс.

Заключение
Большинство клавиатур добавляют задержку, достаточно заметную, чтобы ухудшить впечатления пользователя от работы за компьютером, а рекламируемые как «быстрые» клавиатуры не обязательно быстрее остальных. Две протестированные нами игровые клавиатуры оказались не быстрее других, а самая быстрая клавиатура в тесте — минималистическая клавиатура Apple, которая рекламируется больше как образец дизайна, а не скорости.

Ранее мы видели, что консоли добавляют значительную задержку до 100 мс в относительно пессимистических условиях, если вы выбрали «правильный» терминал. В следующей статье показано время отклика всего конвейера от начала до конца — там рассказывается, какие ещё источники задержки вносят свою лепту и как некоторые современные устройства ускоряют общее время отклика.

Приложение: откуда берётся задержка
Основной источник задержки — время перемещения клавиши. Неслучайно у самых быстрых клавиатур в тесте гораздо меньше ход клавиш. Измерения производились на камеру 240 FPS, с промежутком между кадрами 4 мс. При съёмке «нормальных» нажатий клавиши и печати полное отжатие занимает 4–8 кадров. Большинство переключателей срабатывает до того, как клавиша вернулась в исходное положение, но всё равно длина хода клавиши имеет значение и может легко добавить 10 дополнительных миллисекунд задержки (или больше, в зависимости от механизма переключателей). Сравните это с клавиатурой Apple Magic, где ход клавиш настолько мал, что вообще не регистрируется камерой 240 FPS, то есть занимает менее 4 мс.

Обратите внимание, что в отличие от других измерений, которые мне удалось найти в интернете, здесь замеряется время от начала нажатия клавиши, а не от активации переключателя. Потому что как человек вы не активируете переключатель, вы нажимаете клавишу. Если начинать измерения с активации переключателя, то теряется большая часть задержки. Например, если вы играете в игру и переключаетесь между движением вперёд и назад, то чтобы изменить движение на экране, нужно потратить время на нажатие клавиши, которое отличается на разных клавиатурах. Здесь часто возражают, что «реальные» геймеры держат клавиши в полунажатом состоянии и не тратят столько времени на нажатия. Но если вы возьмёте высокоскоростную камеру и снимете, как в реальности люди работают на клавиатуре, то увидите, что такой приём практически никто не применяет даже среди геймеров. Возможно, профессиональные топовые геймеры и применяют его, но даже в этом случае при использовании стандартной раскладки WASD или ESDF клавиши «вперёд» и «назад» обычно не будут в полунажатом состоянии. Также абсурдна сама идея, что значительная задержка на бесполезный ход клавиши — это нормально, потому что вы можете держать клавишу в полунажатом состоянии. Это как говорить, что большое время отклика на современных компьютерах — это нормально, потому что вы можете собрать игровую конфигурацию, которая в исключительно оптимизированных программах показывает время отклика 50 мс. Обычные, не хардкорные геймеры просто не заморачиваются этим. Поскольку они составляют абсолютное большинство, то поведение «серьёзных» геймеров можно принять за статистическую ошибку.

Другой важный источник задержки — сканирование матрицы клавиатуры и задержка на устранение ложных повторных нажатий. Ни одна из этих задержек не является обязательной — в клавиатуры устанавливается матрица вместо подключения каждой клавиши по отдельности, потому что это экономит пару долларов, а большинство клавиатур сканирует матрицу так медленно, что задержка становится заметна пользователю, с целью сэкономить ещё пару долларов. Но производители готовы немного повысить себестоимость ради того, чтобы снизить задержку до уровня гораздо ниже порога человеческого восприятия. См. ниже о задержке на повторное нажатие.

Хотя мы здесь не обсуждали вопросы производительности, при измерении своей скорости набора я заметил, что она выше на клавиатуре Apple с низким ходом клавиш, чем на любой другой. Здесь невозможно провести слепой эксперимент, но Гэри Бернхардт и другие подтверждают эти выводы. Некоторые говорят, что ход клавиш не влияет на скорость набора, потому что они используют минимально возможный ход, так что это не имеет значения. Но как и в случае с преднажатыми клавишами, если походить и поснимать высокоскоростной камерой, как в реальности люди набирают текст, трудно найти кого-нибудь, кто в реальности так делает.

Приложение: контраргументы против того, что задержка имеет значение
Перед написанием этой статьи я прочитал все материалы о времени отклика, какие смог найти — и трудно было встретить статью, где в комментариях отсутствовал хотя бы один аргумент из перечисленных ниже:

Компьютеры и устройства быстры


Основной контраргумент против измерения времени отклика состоит в том, что задержка на ввод практически нулевая, так что её можно не учитывать. Например, два топовых комментария к этой записи на Slashdot. Один из них даже говорит:

Ни у одной современной клавиатуры нет задержки 50 мс. Это у вас (людей) такая задержка.

Что касается времени отклика, то нужно всего лишь увеличить скорость опроса в USB-стеке.


Как мы видели, некоторые устройства всё-таки вписываются во время отклика 50 мс. Эта цитата, как и другие комментарии в том треде, служит иллюстрацией другого распространённого заблуждения — что время отклика устройств ввода ограничено скоростью опроса USB. Хотя технически такое возможно, но сейчас большинство устройств даже близко не приблизились к такой скорости, чтобы ограничением стала задержка опроса USB.

К сожалению, большинство объяснений задержки ввода предполагают, что ограничивающим фактором является именно шина USB.

Люди не различают задержку в 100 или 200 мс


Вот «когнитивный нейробиолог, который изучает зрительное восприятие и когнитивные способности». Он ссылается на факт, что скорость реакции у человека составляет 200 мс, и говорит кучу научной чепухи в доказательство того, что никто не способен заметить задержку менее 100 мс. Здесь немного необычно, что комментатор заявляет о своей особой авторитетности и обильно использует научную терминологию, но вообще часто люди заявляют, что задержку в 50 или 100 мс невозможно заметить, потому что скорость реакции человека 200 мс. Такой аргумент не имеет смысла, потому что это независимые величины. Это как сказать, что вы не заметили опоздания самолёта на час, потому что время полёта составляет шесть часов.

Другая проблема с такого рода аргументацией заключается в следующем. Если её принять, то ничего не мешает вам добавить по 10 мс задержки на каждом этапе конвейера ввода-вывода — в итоге общее время сильно раздуется и мы получим ситуацию как сейчас, когда вы покупаете компьютер с самым быстрым процессором на рынке, а время отклика у него в шесть раз хуже, чем у машины 70-х годов.

Это неважно, потому что игра обновляется на 60 FPS


Фундаментально это такое же заблуждение, как и предыдущее. Если у вас задержка в половину такта, то с вероятностью 50% она перенесёт событие на следующий шаг обработки. Это лучше, чем вероятность 100%, но мне непонятно, почему люди думают, что задержка должна быть настолько же большой, как частота обновления экрана, чтобы она имела значение. И для справки, дельта в 45 мс между самой медленной и самой быстрой из измеренных нами клавиатур соответствует 2,7 кадрам на 60 FPS.

Клавиатуры не могут быть быстрее 5/10/20 мс из-за устранения ложных повторных нажатий


Даже без усилий по оптимизации механизма переключателей, если вам нужно добавить в систему задержку, нет никакой причины, почему клавиатура не может засчитывать нажатие (или высвобождение) клавиши в момент контакта. Так повсеместно делается в других типах систем и, насколько я могу сказать, клавиатурам никто не мешает поступать аналогичным образом (и надеюсь, какие-то из них так поступают). Время на устранение ложных повторных нажатий может ограничить скорость повторного ввода символа, но нет обязательной причины, почему оно должно влиять на время отклика. И если взять скорость повторного ввода символа, то представим ограничение в 5 мс на время изменения состояния клавиши из-за введения задержки. Это означает, что полный цикл (нажатие и освобождение) занимает 10 мс, то есть 100 нажатий клавиши в секунду, что намного превышает возможности любого человека. Вы можете возразить, что так появляется определённая неточность, которая может негативно повлиять на некоторые приложения (музыка, игры с ритмом), но она ограничивается механизмом переключателя. Использование механизма устранения ложных повторных нажатий с запаздыванием не делает ситуацию хуже, чем она была раньше.

Дополнительная проблема с задержкой на устранение ложных повторных нажатий заключается в том, что большинство производителей клавиатур как будто путают скорость опроса и задержку на устранение ложных повторных нажатий. Часто можно встретить клавиатуры с частотой опроса от 100 до 200 Гц. Это оправдывается заявлениями вроде «Нет причин увеличивать скорость опроса, потому что задержка на устранение ложных повторных нажатий составляет 5 мс» — здесь совмещаются оба заблуждения, описанные выше. Если вы вытащите схемы из клавиатуры Apple 2e, то увидите, что там частота опроса примерно 50 кГц. Задержка на устранение ложных повторных нажатий составляет примерно 6 мс, что соответствует частоте 167 Гц. Зачем же опрашивать клавиатуру так часто? Благодаря быстрому сканированию контроллер клавиатуры немедленно начинает отсчёт времени на задержку для устранения ложных повторных нажатий (максимум через 20 микросекунд), в отличие от современных клавиатур, которые опрашиваются на 167 Гц. Из-за этого отсчёт времени на повторное срабатывание может начаться через 6 мс, то есть пауза занимает в 300 раз больше времени.

Прошу прощения за отсутствие разъяснений по терминологии, но я думаю, что каждый, кто приводит такой аргумент, должен понять и объяснение:-).

Приложение: экспериментальная установка
Измерения USB проводились на кабеле USB. Вскрытие кабеля нарушает целостность сигнала, и я обнаружил, что с длинным кабелем некоторые клавиатуры со слабым сигналом не обеспечивают достаточный уровень для регистрации моим дешёвым логическим анализатором.

Начало измерения инициировалось одновременным нажатием двух клавиш — одной на клавиатуре, а второй подключённой к логическому анализатору. Здесь появляется определённая погрешность, потому что невозможно нажать две клавиши абсолютно одновременно. Для калибрации установки мы использовали две одинаковые клавиши, подключённые к логическому анализатору. Средняя по медиане погрешность составила менее 1 мс, а 90% погрешностей вписываются в пределы 5 мс. Для действительно быстрых клавиатур погрешности такого размера делают невозможными измерения на этой установке, но в нашем случае измерения средней задержки можно считать приемлемыми. Вероятно, погрешность при одновременном нажатии кнопок можно уменьшить на ничтожно малую величину, если сконструировать устройство, которое будет одновременно нажимать кнопку и включать логический анализатор. С такой установкой улучшится и точность измерения средних значений (потому что проще будет проводить большое количество тестов).

Если хотите знать точную конфигурацию установки, то использовался переключатель E-switch LL1105AF065Q. Питание и заземление обеспечивается платой Arduino. Нет определённой причины использовать конкретно такую конфигурацию. На самом деле немного абсурдно использовать целую Arduino для питания, но мы всё сделали из подручных запчастей, а именно эти детали оказались в лаборатории нашего коворкинг-центра, за исключением переключателей. Не нашлось двух одинаковых экземпляров хоть какого-то переключателя, так что нам пришлось купить несколько для калибровки на одинаковом оборудовании. Конкретная модель здесь не имеет значения; подойдёт любой переключатель с низким омическим сопротивлением.

Во время тестов нажималась клавиша z — проверялся байт 29 в шине USB, а затем регистрировалось время первого пакета с соответствующей информацией. Но как и в вышеупомянутой ситуации, подойдёт любая клавиша.

В реальности я не очень доверяю такой конфигурации и для тестирования большого количества клавиатур хотел бы построить полностью автоматическую установку. Хотя наши результаты соответствуют результатам одного другого теста, который удалось найти в интернете, у такой установки погрешность, вероятно, находится в диапазоне от 1 до 10 мс. Хотя усреднение результатов многочисленных прогонов теста теоретически уменьшает погрешность, но поскольку измерения проводятся человеком, то необязательно и даже маловероятно, что ошибки будут независимы и исчезнут после усреднения.

Я пытаюсь найти больше моделей телефонов и компьютеров для проведения измерений и был бы рад провести быстрое тестирование на вашей системе или устройстве, если её/его нет в списке! Если вы живёте далеко и хотите пожертвовать устройство для тестов, можете высылать на мой адрес:

Dan Luu
Recurse Center
455 Broadway, 2nd Floor
New York, NY 10013

© Habrahabr.ru