2011-07-30 13 views
19

Powiel możliwe:
What is the shortest perceivable application response delay?Jakie jest minimalne opóźnienie wykrywalne przez człowieka?

Byłem profilowania kodu JavaScript UI, ponieważ czuje się trochę laggy. Do tej pory znalazłem kilka wąskich gardeł i zoptymalizowałem je, ale chciałbym zdefiniować wymierne wymaganie w tym zakresie.

Jak szybko powinna nastąpić reakcja, aby człowiek nie zauważył opóźnień? Na przykład, jakie jest minimalne wykrywalne opóźnienie między naciśnięciem klawisza klawiatury a wyświetleniem litery na ekranie? W którym momencie dalsza optymalizacja nie ma żadnego znaczenia dla człowieka?

Wiele monitorów ma częstotliwość odświeżania około w zakresie 60-120 Hz. Czy to oznacza, że ​​magiczna liczba to około 8-16ms?

+0

To jest bardzo interesujące pytanie. Jestem pewien, że to się zmienia, ale musi być kilka bardzo dobrych badań w tej dziedzinie. –

+0

dla "natychmiastowej" informacji zwrotnej - pamiętam testowanie najszybszego ludzkiego czasu odpowiedzi - około 10ms – Randy

+0

również pamiętam, że oko może przetwarzać coś w rodzaju 25 klatek na sekundę w wideo. – Randy

Odpowiedz

10

Biorąc pod uwagę „wciśnij przycisk” zdarzenie i litery pojawiające się na ekranie jako dwóch oddzielnych klatek, co oznacza, że ​​jeśli użytkownik naciśnie klawisz, patrząc na ekranie, będzie chciał zobaczyć to dokładnie później. To "dokładnie potem" oznacza, że ​​powinien mieć czas odpowiedzi 60 Hz lub wyższy.

Z tego powodu wartość 8-16 ms powinien rzeczywiście być skierowane do, ponieważ spowoduje to tego samego efektu jeden widzi w filmach. Innymi słowy, użytkownik nie będzie miał postrzegania opóźnienia dla takich wartości.

Należy jednak pamiętać, że klawiatura ma czas odpytywania własnych, i że dodatkowe opóźnienia niekoniecznie związane ze skryptem sama może ingerować w swoim czasie. Z tych powodów dążenie do wartości wyższych niż 60 Hz da ci większy margines bezpieczeństwa w stosunku do innych możliwych wpływów, które mogą spowodować niewielkie opóźnienie.

Należy również zauważyć, że w niektórych aplikacjach opóźnienie o wartości 100 ms może wydawać się niezauważalne, ale w rzeczywistości jest zauważalne, ponieważ odpowiada 10 Hz, a jeśli chcesz odtwarzać film przy tej częstotliwości odświeżania, najprawdopodobniej zda sobie sprawę z luk między każdą z klatek filmu. Z tego powodu wartość ta nie powinna być rozpatrywana w kontekście generycznym.

czułość ludzkiego oka jest różna dla różnych warunków i części obrazu, więc należy być ostrożnym i rozważyć wyższe stawki za niezbędne odświeżania, aby pomieścić to.

This link ma dodatkowe informacje o tym, jak charakterystyka ekranu i jego zmiany są odbierane przez ludzkie oko, i może dać ci wyobrażenie o tym, jakie częstotliwości odświeżania powinieneś dążyć w danym kontekście, na podstawie wizualnego wpływu twojego skryptu .

+1

Ale istota ludzka nie może dostrzec granicy między jedną ramką przy 60 Hz i następnej. Zwłaszcza jeśli aktualizowana jest tylko niewielka część ekranu. Co więcej, nawet jeśli przetwarzanie odbywa się w czasie, aby aktualizacja pojawiła się w "następnej" ramce, nie można zagwarantować, że ta ramka będzie faktycznie wyświetlana natychmiast po tej, którą użytkownik aktualnie widzi. Może na przykład być buforowanie wykonywane przez sterownik karty graficznej lub wewnętrznie wewnątrz samego wyświetlacza (lub obydwu). Dążenie do zakończenia przez następną klatkę jest w większości przypadków przesadą (wyjątek: gry). – aroth

+1

Mimo to możliwe jest, że skrypt działa z więcej niż jedną postacią, i myślę, że najbardziej ogólnym podejściem byłoby przyjrzenie się temu jako filmowi, w którym z jednej ramki do drugiej cały ekran może się zmieniać w wielu sposoby. Oczywiście w wielu przypadkach nie byłoby to konieczne, ale było to podejście matematyczne. Nawet w grach, opóźnienie 100 ms może być odczuwalne zupełnie inaczej w zależności od rodzaju gry, z powodu implikacji opóźnienia i sposobu, w jaki postrzegamy je w danej grze. –

9

Zgodnie z ogólną zasadą, że znajdę coś szybciej niż 100ms ma tendencję do bycia postrzeganym jako „instant”. Idź o wiele dłużej, a opóźnienie zdecydowanie staje się zauważalne. Oczywiście będzie to trochę różnić się w zależności od osoby, a także w zależności od kontekstu, w którym występuje opóźnienie.

Można znaleźć ten przykład pomocne: http://jsfiddle.net/QGmBy/

+0

Dobry przykład, ale jestem pewien, że nadal widzę opóźnienie dla 80ms. Czy ktoś jeszcze może? Choć jest to popularna odpowiedź, z jakiegoś powodu 100ms wydaje się zbyt długim czasem, aby być minimalnym wykrywalnym opóźnieniem. – pepsi

+3

@pepsi W zakresie użyteczności zasada jest taka, że ​​0.1s jest postrzegane jako "natychmiastowe", 1s jako "dość szybkie" "i 10s jako" znudzony i szukający czegoś innego do zrobienia ". Są to jednak liczby w ballparkach, a nie dokładne, i mają odzwierciedlać opóźnienia, które zaczynają ingerować w wykonywane zadanie, a nie minimalne wykrywalne. Tak, mogę (tylko) wykryć opóźnienie 80ms, ale nie nazwałbym tego "irytująco wolno" :) –

+0

@pepsi - Co powiedział j-g-faustus. 100 ms to ogólna zasada, a nie dokładna odpowiedź. I tak, ja też mogę powiedzieć, że przykład z 80 ms zajmuje nieco więcej czasu niż poprzednie przykłady, ale nadal jest dość cholernie szybki. Jest to z pewnością mniej zauważalne niż przykład 160 ms. – aroth

2

Jeśli wydarzenie wystąpi tylko raz, wówczas 100ms powinno być górnym limitem. jeśli wydarzenie jest częścią ruchu ciągłego, to powinno to być około 10-15ms, ponieważ opóźnienie wynoszące 100 ms w czymś podobnym do przesuwania (jeden [lub więcej] pikseli na raz) może być zauważalne, jeśli takie opóźnienia występują w rząd jeden za drugim.

Również w pewnym stopniu zależy od kontekstu, co się opóźnia. kluczowe wydarzenie prasowe, coś wślizgującego się, wydarzenie w czasie rzeczywistym wydarzenie na innej maszynie, wszystkie będą miały różne poziomy "tolerancji" :)

Powiązane problemy