이 질문에 내놓았다. 스파이 킹은 없으며 속도가 느린 곳곳에 분산되어있는 것처럼 보입니다. 다음에 무엇을합니까?게임 성능 최적화 인터뷰
나는 놀랐다. 그것은 속임수입니까? 퍼프 (perf) 문제를 해결할 때, 나는 항상 이것이 모든 것을 다시 확장 할 필요가 있다고 생각합니다. 나는 mem perf라고 생각하지 않는다. 그것은 CPU 퍼포먼스에 나타난다.
이 질문에 내놓았다. 스파이 킹은 없으며 속도가 느린 곳곳에 분산되어있는 것처럼 보입니다. 다음에 무엇을합니까?게임 성능 최적화 인터뷰
나는 놀랐다. 그것은 속임수입니까? 퍼프 (perf) 문제를 해결할 때, 나는 항상 이것이 모든 것을 다시 확장 할 필요가 있다고 생각합니다. 나는 mem perf라고 생각하지 않는다. 그것은 CPU 퍼포먼스에 나타난다.
아마도 이것은보다 효율적인 알고리즘에 관한 것입니다. "마이크로 최적화"에는 한계가 있습니다. 예를 들어 버블 정렬을 완벽하게 최적화 할 수 있지만, 큰 스피드 업을 얻으려면 다른 정렬 알고리즘을 고안해야합니다.
또한 게임에서 다양한 종류의 조정 가능한 품질/속도 (또는 정밀도/속도) 절충을 소개 할 수 있습니다. 일반적으로 모든 게임에는 그래픽 세부 수준을 변경하는 일부 설정이 있습니다.
당신은 당신의 게임에서 병목 검색하는,하지만 아무것도 당신이 변화가 더 빨리 게임을하고있어하지, 그것을 GPU 파이프 라인 또는 CPU에서 아무것도합니다. 스파이크가 전혀 발생하지 않으며 느려짐이 에 걸쳐 모든 곳에 분산되어 나타납니다.
Uniformly Slow Code의 정의와 비슷합니다. 실제로 이것이 의미하는 바가 있다고 가정 해 봅시다 (일부 I/O 병목 현상이나 루프의 불필요한 객체 생성 또는 데이터 구조 나 알고리즘 등의 부적절한 선택이 아닙니다).
균일하게 느린 코드를 더 빠르게 만들려면 일반적으로 좋은 방법을 따르지 않으면 안되기 때문에 코드가 균일하게 느려지는 경우 코드 최적화가 중단됩니다. ("최적화 중지"는 인터뷰에서 좋은 대답이 아닐 것 같습니다 ...)
작업을 빠르게 수행하는 한 가지 방법은 작은 작업의 적절한 순서를 식별하고 한 곳에서 함께 수집 한 다음 수동으로 개선하는 것입니다 사물; 이러한 작업을 "수동으로 인라인 (inlining)"한 다음 출현하는 코드에 대해 고수준의 단순화를 수행합니다. 이 작업이 가치가 있고 관련 코드에 대한 탁월한 이해가 필요한 경우 좋은 직관이 필요합니다. This answer calls it bunching and horizontal optimization.
귀하의 이 실제로에 균일하게 느린 코드가 있는지 살펴볼만한 또 다른 사항은 Andrei Alexandrescu's optimization tips입니다.
자세한 정보를 요청했을 것입니다. "느리게"는 나쁜 성능을 나타내는 지표가 아니며 증상 자체보다는 증상을 분류하는 것입니다. 예를 들어, 당신이 존재로서 "느린"설명 될 수 있습니다
이러한 문제의 모든 다른 잠재적 인 원인과 솔루션이 네트워크 게임의 경우, 명백한 네트워크 지연에
O(1)
(파이썬 stdlib ... ick)이 아닌 O(N)
이라는 사실을 발견했습니다. 볼 수없는 문제는 진단 할 수 없으며 프로파일 링은 첫 번째 방어선입니다.그래서 여기에 대한 대답은 면접자가 증상을 더 완전하게 설명하도록하는 것입니다. @ 알리의 대답은 훌륭하지만 진단 할 때 약간의 감정을 필요로하는 좀 더 미묘한 문제가있을 수 있습니다. 일화
:
이
내가 문제가 실제로 질문에 대한 답을 알지 못하고 무엇인지를 알 수 있습니다; P
실수 다이렉트 통화. 너무 많은 물체. dx9가 모든 객체에 대해 새로운 directdraw 호출을해야하기 때문에 일부 오래된 dx9 게임에서는 특히 좋지 않습니다. 또는 그런 것, 이야기는 간다. 기본적으로 CPU가 모든 메시지를 처리 할 유휴 대기 상태가되었습니다.
비록 모든 정보에 대한 해결책이 아니지만 정보의 내용으로 언급 할만한 가치가 있지만 p는 다른 의견에서 정보를 보지 못했습니다.
gpu가 100 %로 작동한다는 점을 제외하고는 거의 픽셀 쉐이더를 사용하는 것과 거의 같습니다. 튀김 오믈렛에 적합합니다. 나는 이것이 전적으로 확실하지 않다 페이지
, 난 당신이의 유머를 볼 수 있기를 바랍니다
(또한, 성능을 저장 폐색을 사용하고 해당 모델에 픽셀 쉐이더의 질량을 추가하는 것은 나쁜 생각입니다) 주제에 대한 SO. 그러나 우리는 그것이 어떻게되는지 보게 될 것입니다 ... – Mysticial
아마 다른 하드웨어에서 복제하고 싶습니다. 그들이 원하는 것을 확신하지 못합니다. –
분명히 당신은 해결책을 찾았습니다 - "나는 그 질문을 게시하고 결과를 기다릴 것입니다"... 또한 나는 당신의 인터뷰에 실패 할 것이라고 생각합니다. –