In the process of using APP/game experience, users often have obvious lag problems such as unstable refreshing of new images, inconsistent visual sensory images, time-consuming game screen buffering, and low frame rate operation delay. Then the specific influencing factors are what? From the perspective of several common parameters such as FrameTime, FPS, fluency, and Jank, we will analyze the performance problems in depth, so that you can improve the performance and quality of APP applications and games in the later stage.

One, FrameTime

The definition of FrameTime: the time-consuming interval between two frames (it can also be simply regarded as the time-consuming single frame rendering).

Is there any connection between FrameTime and Caton? Please see the case diagram below:

It can be seen from the figure that the GPU rendering time (frame generation time) of the B frame in the picture is greater than the display refresh interval, which takes up two display refresh time. In other words, the screen was not refreshed once. When there is no screen refresh for many times (that is, the screen has not changed), it may be a freeze.

From here, it can be concluded that what the player user really sees is the time between the refresh of the new screen, not the time between the completion of eglSwapbuffers-GPU rendering (without submitting the screen display). So the Frametime mentioned later all refers to the screen Display-Frametime.

Advantages of PerfDog tool: The FPS and Frametime counted by PerfDog are the real refresh FPS and frame time of the new screen displayed by the user. So you can directly use Frametime to judge whether there is a freeze during the test.

Two, FPS

Definition of FPS: frame rate (average number of screen refreshes in 1 second).

Average frame rate: the traditional FPS, the average number of screen refreshes in 1 second.

Instantaneous frame rate: the real-time FPS calculated by FrameTime for a single frame, and the real-time frame rate calculated by the time-consuming frame refresh for each frame.

The screen rendering flowchart is as follows, FrameTime for each frame.

PerfDog statistics frame rate and FrameTime are as follows:

Does FPS frame rate have anything to do with stuttering? We are divided into two scenarios, Andriod and ios, to further understand:

1. iOS

Apple WDDC18 Developer Conference FramePacing

For example, in the following two game screens, the left one tries to run at 60 frames, but it can only reach 40 frames; the right one continues to run at 30 frames:

The frame rate on the left side of the above picture is high, but it seems that there is a phenomenon of jams. This is caused by Micro Stuttering. The FrameTime on the left is as shown below:

It can be seen from FrameTime that FrameTim>=180ms appears once in the high frame rate FPS=40 on the left, and the theoretical average FrameTime=25ms. Therefore, the non-uniform rendering, although the frame rate is as high as 40, still feels very stuck.

On the right, running FrameTime at a low frame rate of 30 frames is as follows:

It can be seen from the above FrameTime that the frame rate is FPS=30, the FrameTime is evenly 33ms, and the picture will be very smooth.

Summary: The frame rate is high and may not be smooth.

2. Android

Test system version: Android4.4 Fluency Mechanism-Butter Project (Jank)

Google Jank calculation idea: Considering visual inertia, using the hardware vsync time interval, if there is no new screen refresh in vsync for one consecutive time, it is considered to be a stall, that is to say, if there is no new screen refresh at the next vsync time point, it is considered to be a Jank.

3. Fluency

The relationship between fluency and stuttering can be roughly shown with the following flowchart:

Fluency affects lag. This can be simply understood as the two aspects of visual inertia and movie frames:

1. Visual inertia

Visually expected frame rate, the user subconsciously thinks that the next frame should also be refreshed at the current frame rate, for example, always 60 frames, and the user subconsciously thinks that the next frame should also be 60 frame rate. The refresh rate is always 25 frames, and the user subconsciously thinks that the next frame should also be 25 frame rate. However, if the refresh is 60 frames, it jumps to 25 frames, which disturbs the user's visual inertia. At this time, there will be a sense of lag in the user experience.

2. Film frames

Movie frame rate (18-24), generally 24 frames. Single frame time for movie frame: 1000ms/24=40ms. The movie frame rate is a critical point. Below this frame rate, the human eye can basically feel the discontinuity of the picture, that is, feel the freeze.

Four, PerfDog-Jank

PerfDog Jank calculation idea: Considering visual inertia, assuming the average frame time of the previous three frames as a reference, as the vsync time interval, two consecutive vsync without new rendering picture refresh, it is considered as a potential freeze, that is to say the next frame If the time consuming is more than 2 times the average frame time of the previous three frames, it is considered as a potential freeze. At the same time, the single frame time is more than twice the film frame time of 1000ms/24*2 (because the human eye is less than 24 frames to distinguish the picture discontinuity), it is considered to be a real freeze. At the same time, if the single frame time is greater than 3 times the movie frame time, it is considered to be a serious freeze.

Note: Why is vsync twice? The GPU generally uses a triple-buffer buffer, and the current frame has occupied one buffer, that is, the remaining 2 buffer buffers, and the human eye can generally tolerate a 2-frame delay.

Why is it time-consuming for two film frames? If the picture is less than 24 frames, the human eye can perceive the discontinuity of the picture, and movies generally have 24 frames. That is, the movie frame time is 1000ms/24=41.67ms, the two-frame movie frame time is 41.67ms 2, and the three-frame movie frame time is 41.67ms 3.

PerfDog Jank calculation method:

If two conditions are met at the same time, it is considered to be a stuck Jank.

①Display FrameTime> The average time consumption of the first three frames is 2 times.

②Display FrameTime> Time-consuming for two film frames (1000ms/24*2=84ms).

If both conditions are met at the same time, it is considered to be a serious BigJank lag.

①Display FrameTime> The average time consumption of the first three frames is 2 times.

②Display FrameTime> Time-consuming for three film frames (1000ms/24*3=125ms).

Google-Jank is shown in the figure:

PerfDog-Jank is shown in the figure:

Real test FrameTime calculates Jank, as shown below:

PerfDog-Jank is shown in the figure:

Remarks: The frame rate is low, it is not the frame rate. For example, the frame rate is only a few frames, what else is the frame rate?

The current mainstream game comparison Jank is as follows:

PerfDog-web platform

From the previous content, after we understand the close relationship between FrameTime, FPS, fluency and Jank, we can go with the flow and draw our conclusions:

1. The game

The fluency of the game is the most influencing user experience, so you need to focus on FPS and Jank.

Remarks: For example, the foreseeable lag in the game, such as the new UI pop-up, causes the lag, which can be considered as interference and needs to be eliminated. It should not be counted as Jank. You can delete the interference data by selecting the right button on the web cloud.

2. APP aspect

APP also needs to pay attention to FPS and Jank. Just need to distinguish the usage scenarios, such as:

1) Static page window

Just pay attention to FPS, the theoretical FPS should be 0, otherwise, it means that there is redundant refresh, which will easily cause the phone to heat up and consume power.

2) There is a scrolling animation page window

Just pay attention to FPS, FPS is at a suitable value, no need for high frequency refresh.

3) Swipe the page window quickly.

Need to pay attention to FPS and Jank. This is the reason for the sensitivity of mobile phone interaction, and the Android system has developed the butter plan Jank. In general sliding state, the higher the frame rate, the better, and the smaller the Jank, the better.

4) Play the video page window.

Need to pay attention to FPS and Jank, video freezes directly affect users. The general video frame rate is 18-24 frames, Jank=0. For example, WeChat play video, video player, etc.

Through the above content analysis, I believe that everyone can clearly understand the performance parameters that affect the APP application & game experience, as well as the key points that need to be paid attention to in the test work before and after the launch. PerfDog is a Tencent WeTest client performance testing tool that can quickly locate and analyze performance problems, and is committed to improving the quality of APP applications and game performance.


腾讯WeTest
590 声望149 粉丝

WeTest是腾讯游戏官方出品的一站式测试服务平台,