Wydajność subiektywna a wydajność rzeczywista

Ostateczny osąd na temat tego, czy aplikacja działa poprawnie, wydają jej użytkownicy. Programiści mogą mierzyć wydajność aplikacji pod względem czasu wykonywania niektórych operacji oraz liczby tworzonych instancji obiektów. Jednak te metryki nie są istotne dla użytkowników końcowych. Niekiedy użytkownicy mierzą wydajność na podstawie innych kryteriów. Na przykład: Czy aplikacja działa szybko i płynnie oraz czy szybko reaguje na dane wejściowe? Czy ujemnie wpływa na wydajność systemu? Każdy programista powinien zadać sobie następujące pytania, które umożliwiają subiektywną ocenę wydajności:

  • Czy animacje są wyświetlane gładko, czy z przerwami?

  • Czy treść wideo jest wyświetlana gładko, czy z przerwami?

  • Czy klipy audio są odtwarzane w sposób ciągły, czy są wstrzymywane i wznawiane?

  • Czy podczas długotrwałych operacji okno miga lub znika jego zawartość?

  • Czy podczas pisania wpisywane znaki są natychmiast widoczne, czy z opóźnieniem?

  • Czy po kliknięciu konkretna operacja jest wykonywana natychmiast, czy z opóźnieniem?

  • Czy wentylator procesora działa głośniej podczas pracy aplikacji?

  • Na laptopie lub na urządzeniu mobilnym: czy podczas korzystania z aplikacji następuje szybsze zużycie baterii?

  • Czy podczas korzystania z tej aplikacji działanie innych aplikacji stało się wolniejsze?

Odróżnienie wydajności subiektywnej i rzeczywistej jest istotne. Sposoby na osiągnięcie najlepszej wydajności subiektywnej nie są zawsze takie same, jak sposoby na osiągnięcie największej szybkości działania aplikacji. Należy się upewnić, że aplikacja nigdy nie wykonuje takiej ilości kodu, przy której środowisko wykonawcze nie mogłoby często aktualizować zawartości ekranu i gromadzić danych wprowadzanych przez użytkownika. W niektórych przypadkach w celu osiągnięcia tej równowagi konieczne jest podzielenie programu na części, pomiędzy którymi środowisko wykonawcze będzie aktualizować ekran. (Konkretne informacje zawiera sekcja Wydajność renderingu ).

Wskazówki i techniki opisane w niniejszej sekcji są przeznaczone do zwiększania wydajności rzeczywistego wykonania kodu oraz zwiększenia wydajności subiektywnej.