모바일 장치에 STL이 충분히 효율적입니까? 컨테이너를 작성하는 반면

iOS 및 Android NDK의 모바일 게임 개발과 관련하여 일부 개발자는 자체 C ++ 컨테이너를 작성하는 반면 다른 개발자는 STL이 모바일 게임 개발에 적합하다고 주장합니다 (예 : iPhone 3D 프로그래밍 작성자는 Objective- 그의 사례에서 C. 그의 방어는 STL이 Objective-C보다 느리지 않다는 것입니다).

C ++을 완전히 버리고 C 언어 (C89 / C90)로 게임을 개발하는 모바일 개발자도 있습니다.

각 접근 방식의 장점과 단점은 무엇입니까?



답변

한 가지 먼저 말씀 드리겠습니다. C ++은 Objective-C 호출보다 빠릅니다. Objective-C는 메시지 전달 시스템을 사용하므로 C ++과 비교할 때 약간의 런타임 오버 헤드가 있습니다. 여기서 몇 가지 비교를 살펴보십시오 .

iOS의 일반적인 “앱”개발로 인해 Objective-C 내장 함수를 사용하는 것이 의미가 있습니다. 성능은 어느 정도는 큰 기준이 될 수 없기 때문입니다. 그러나 게임 개발에서는 이러한 결과를 고려해야합니다.

이전 프로젝트 (Robokill)에서 작업 할 때 일반 C 호출 (Objective-C 입자 클래스를 C ++ 클래스로 변환)을 사용하여 필요한 경우 대부분의 코드를 최적화했습니다. 또는 직접 C 호출에 Objective-C 런타임 함수를 사용할 수도 있습니다.

귀하의 질문에 관해서, 여기에 내 대답이 있습니다 : 예, STL은 그 목적에 맞게 최적화되었습니다 . 구현 코드를 읽을 수는 없지만 구현을 한 번 확인하는 것이 흥미 롭습니다.

그러나 함수 포인터를 미리 캐싱하고 Objective-C 런타임으로 호출하여 Objecive-C 코드를 어느 정도 최적화 할 수 있습니다.

도움이 되었기를 바랍니다!