모바일 장치에 STL이 충분히 효율적입니까?


9

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

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

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


4
STL에 대한 주된 비판은 예측할 수없는 메모리 할당 패턴과 컴파일러 지원입니다. 두 가지 문제 모두 STL 대안 (예 : EASTL 또는 STLPort)을 사용하여 해결할 수 있습니다.
Raphael R.

1
이 질문에 대한 몇 가지 답변 : gamedev.stackexchange.com/questions/268/… 모바일 플랫폼을 터치하면 답을 얻을 수 있습니다.
Tetrad

5
나는 많은 사람들이 모바일 플랫폼에서 C ++을 "폐기"하고 (더 이상 사용하지 않는 것처럼) STL과 Objective-C ++의 어색함에 대해 더 의심합니다 (그리고 C ++ 지원은 일반적으로 Apple의 툴 체인에 뒤 떨어짐).

진짜 질문은 더 잘 쓸 수 있습니까? STL을 이해하는 것이 좋습니다. 원하는 작업을 수행하지 않는 경우 필요한 동작을 구현하십시오.
감속 캐비어

답변:


6

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

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

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

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

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

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

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