STL对于移动设备是否足够有效?


9

在iOS和Android NDK上进行移动游戏开发时,一些开发人员编写了自己的C ++容器,而另一些开发人员则声称STL足以满足移动游戏开发的需求(例如,iPhone 3D编程的作者使用STL而非Objective-在他的示例中使用C。他的辩解是STL不比Objective-C慢。

然后,还有一些移动开发人员完全放弃了C ++,完全(或大部分)使用C语言(C89 / C90)开发了游戏。

每种方法的优点和缺点是什么?


4
对STL的主要批评是它具有不可预测的内存分配模式和编译器支持-这两个问题都可以通过使用STL替代方案(例如EASTL或STLPort)来解决。
拉斐尔R.11年

1
这个问题的几个答案:gamedev.stackexchange.com/questions/268/… 在移动平台上接触并应给您答案。
Tetrad

5
我怀疑对于许多在移动平台上“放弃”(更像是从未使用过)C ++的人来说,它与STL无关,而更多地与Objective-C ++的笨拙(以及C ++支持通常落后于Apple的工具链)有关。

真正的问题是,你能写得更好吗?您最好了解STL。并且在无法满足您期望的情况下,实现您所需的行为。
deceleratedcaviar 2012年

Answers:


6

我先告诉你一件事。C ++比Objective-C调用要快。Objective-C使用消息传递系统,因此与C ++相比,它将有一些运行时开销。请看这里的一些比较。

进入iOS常规的“ app”开发后,使用Objective-C内置函数很有意义,因为在某种程度上性能不能成为很多标准。但是在游戏开发中,我们需要考虑这些结果。

当我在上一个项目(Robokill)中工作时,我们在需要时使用纯C调用优化了大多数代码(我们将Objective-C粒子类转换为C ++类)。或者甚至可以使用Objective-C运行时函数进行直接C调用。

谈到您的问题,这是我的答案:是的,STL已针对其目的进行了优化。即使实现代码可读性不高,检查实现一次还是很有趣的。

但是,通过预缓存函数指针并使用Objective-C运行时进行调用,我们可以在某种程度上优化Objecive-C代码。

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.