XNA / MonoGame에서 프레임 속도를 잠금 해제하면 코드가 얼마나 효율적인지 알 수 있습니까?


12

MonoGame에서 다음을 통해 프레임 속도를 잠금 해제했습니다.

this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;

그리고 게임에서 얼마나 효율적으로 업데이트하고 그림을 그리는 지에 대한 기초로 사용합니다.

프레임 카운터를 제외하고 그려 지거나 업데이트되지 않은 240 x 160 의 해상도에서 9,000 ~ 11,000 FPS 의 FPS 값을 얻습니다 .

모든 코드를 다시 추가하면 약 1,100 FPS 로 떨어집니다 .

이것은 내 코드가 GPU 속도를 현저히 늦추고 있다는 것을 나타내는 좋은 증거입니까? 게임은 60 FPS에서 실행되므로 여전히 그 거리가 멀지 만 잠금 해제 된 프레임 속도의 어느 시점에서 걱정해야합니까?

GPU : AMD FirePro W5000 (FireGL V)


1
참고로 개발 경로에서 대상 FPS를 디버그 및 릴리스 상태로 유지하는 것이 좋습니다. 뭔가 릴리스에서 잘 실행할 수 있지만 디버그에서 지옥만큼 느려질 수 있습니다. 실제로는 유용하지 않습니다 :)
Vaillancourt

실제로는 아닙니다. 다른 답변이 이것에 잘 대답하지만, 요점은 하드웨어 가속을 사용하여 그래픽 카드가 대부분의 무거운 물건을 들어 올리는 것입니다. 그래픽과 동일한 스레드에서 작업하지 않는 한 (그렇지 않아야 함) FPS가 코드의 영향을받는 이유는 전혀 없습니다.
Dan Pantry

답변:


30

조잡하게 만.

첫째, FPS는 선형 척도가 아닙니다 . 11k FPS와 9k의 차이는 매우 작습니다 (프레임 당 0.0000201 초). 그러나 60 ~ 2060 FPS (11k와 9k 사이에 존재하는 2k FPS 델타)의 차이는 0.0161 초입니다 ... 매우 큽니다. 따라서 큰 차이가 그렇게 나쁘거나 나쁘지 않을 수 있기 때문에 성능 메트릭으로 위험 할 수 있습니다.

대신 프레임 당 시간을 사용하면 추론하기가 약간 쉬워 지지만 여전히 상황에 대한 매우 광범위한 시각입니다. 게임의 한 프레임이 몇 초 동안 걸리는지 알려줍니다. 하나의 특정 기능을 추가하거나 활성화 한 직후에 프레임 시간이 크게 증가하지 않는 한, 이유를 알 수 없습니다 .

보다 심층적 인 프로파일 링을 수행 할 시간을 결정하기위한 기본 기압계가 될 수 있습니다. CPU 또는 GPU에 종속되어 있는지 확인하기 위해 FPS를 사용하는 것은 특히 좋지 않습니다. GPU 프로파일 링은 CPU에서 시간을 측정하는 것 (타이밍 및 FPS 계산 코드가있는 위치) 만큼 쉽지 않습니다 .

당신이 걱정해야 할 때 ... 글쎄, 당신은 자신이 게임이 60 FPS를 목표로하고 있다고 말했다. 그 근처 또는 아래로 떨어지기 시작하면 성능 문제에 대해 더 신중하게 생각해야 할 것입니다. 그때까지, 나는 모든 것을 작동 시키는 데 집중 하고 그것을 빨리 만드는 것에 대해 걱정할 것 입니다.


6
마지막 문장 +1 제 생각에는 조기 성능 최적화는 꽤 나쁜 습관입니다 (경험에서 말하면).
sirdank

1
c2.com/cgi/wiki?PrematureOptimization- 주제에 대한 권장 읽기
Machinarius

항상 그렇지는 않지만 고급 컴퓨터가 있고 약 80 FPS를 얻는다면 컴퓨터에서 충분할 것입니다. 그러나 저가 컴퓨터를 대상으로하려는 경우 15 FPS 만 얻을 수 있습니다. 이상적으로는 가장 좋습니다. 타겟팅하려는 최소 사양으로 머신에서 테스트를 수행해야하지만 실패하면 머신에 맞게 최적화하면 머신에 맞게 최적화 할 수도 있습니다. 물론, 저가형 머신에서 충분히 빠르게 실행된다면, 특히 버그 증가의 위험이있는 경우 더 최적화하기 위해 추가 노력을 기울일 이유가 없습니다.
Programmdude

5

왜 당신이 그것을 사용할 수 없는지 모르겠습니다! 고정 / 가변 타임 스텝 간의 차이를 설명하기 위해 코드를 다르게 코딩해야 할 수도 있으므로 릴리스 할 때 고정 할 계획이라면 조정해야합니다. 이 기사를 참조하십시오 : http://rbwhitaker.wikidot.com/time-steps

내 코드가 GPU 속도를 크게 저하시키고 있음을 나타내는 좋은 표시입니까?

CPU도 될 수 있습니다. 코드에서 핫스팟을 찾으려면 Visual Studio의 기본 제공 프로파일 러를 주기적으로 실행하거나 큰 프레임 속도 저하가 나타날 때마다 권장합니다.

걱정해야합니까?

그것은 분명히 당신이 목표로하는 하드웨어에 달려 있습니다. 지원하고자하는 최저 최소 요구 사항에 대해 코드를 테스트해야합니다. 그것이 적어도 60에서 실행된다면 너무 걱정하지 않아도됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.