首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“自制”STL的性能?

“自制”STL的性能?
EN

Stack Overflow用户
提问于 2009-03-26 16:25:51
回答 8查看 1.1K关注 0票数 4

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html

根据那篇文章,STL不适合游戏开发。你对此有何感想?

我目前的方法是这样的:使用STL,如果导致性能问题,则与自制容器(或分配器)交换(尚未开始,但我不是在做高端3d游戏;)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-03-26 16:29:09

在这种情况下,您的方法是唯一明智的选择。优化的第一条规则是“除非你确切地知道瓶颈在哪里,否则不要优化”。

以后您应该仍然能够相对容易地交换容器,特别是如果您使用通过type定义的类型,而不是直接使用STL容器。我的意思是这样的:

代码语言:javascript
复制
#include <vector>

typedef std::vector<int> MyIntVectorType;

int main()
{
   MyIntVectorType theVector; 
}
票数 10
EN

Stack Overflow用户

发布于 2009-03-26 16:30:01

你必须意识到STL在幕后做什么。例如,如果您使用一个向量,例如,不要让它任意增长,使用vector::resize()提前进行分配,这样它只分配一次。诸如此类的东西。你的方法还不错--做你的功课就行了。

票数 6
EN

Stack Overflow用户

发布于 2009-03-26 21:45:31

如果你刚刚开始游戏编程,那就继续使用STL吧,它很棒,而且很稳定。你最好使用一些有效且稳定的东西,而不是为了一两个fps而开始抓挠。然而,这里是许多主流工作室不使用它的两个原因。

  • 在某一时刻,你会想要把你的系统推到极限。如果你的引擎非常大,优化容器是一个很好的方法来获得所有的东西(图形,音频,物理等)。使用汇编进行优化,让容器的不同实现用于不同的用途将是必须的。模板不是最简洁的实现。
  • STL在不同的平台(PS2,PS3,Wii,360,PC等)上有不同的实现。如果你是跨平台工作的,有时这些差异会在你系统的根部产生问题,在假设的“全平台代码”中。当这种情况发生在你身上时,你会想要转移到一些你能够以更容易的方式维护的东西上。

拥有一个自定义版本的容器不是一件微不足道的工作,只有在它值得的时候才去做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/686510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档