加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我应该使用标准C容器和东西进行游戏和其他实时活动吗?

发布时间:2020-12-16 07:10:50 所属栏目:百科 来源:网络整理
导读:我是一名使用VS 2012和VS 2010开发AAA游戏的C开发人员.我已经读过没有使用STL和VS附带的标准头文件中提供的其他东西.我根据游戏编程阅读了网站上的大部分内容,其中一些真的来自业内众所周知的人.我见过他们甚至不使用矢量,列表,地图等的情况,甚至没有使用效
我是一名使用VS 2012和VS 2010开发AAA游戏的C开发人员.我已经读过没有使用STL和VS附带的标准头文件中提供的其他东西.我根据游戏编程阅读了网站上的大部分内容,其中一些真的来自业内众所周知的人.我见过他们甚至不使用矢量,列表,地图等的情况,甚至没有使用效用函数和算法.在这种情况下,他们编写那些容器和自己的东西,它们具有几乎相同的接口,并且在如此巨大的代码上花费了大量的调试和实现时间.

我有两个问题:

1:为平台提供优化的VS实现是否具有更好的性能?是不是它使用了客户端上的人们不知道的一些内部函数,并且在基本的容器操作(例如insert,remove,find,swap,copy?)中提供它们自己的实现确实会更慢.让我们假设我们提供自己的自定义分配器,以便更快地将内存管理到我们使用的每个容器.此外,他们负责碎片,对齐和东西.为什么要开发具有几乎相同接口的自定义容器,为什么不花时间编写分配器和其他可能实际有用的东西呢?

2:有时我们通过巨大的代码库中的标准头文件包含很多很多不必要的东西.不必要,因为我们只需要一些或两个来自如此巨大的标题,包括其他巨大的标题等等.现在,我知道除非使用模板,否则不会实例化模板,对于它们内部的成员函数也是如此,等等等等.因为,这些是预编译的头文件,所以可以安全地假设没有编译时间用于那些不必要的东西.我的问题是,这些包含对代码大小(可执行文件)有任何隐藏的影响,随着代码库的巨大增长而增长吗?在我看来应该没有,但我想知道我并没有错,以防万一.

谢谢

解决方法

> STL针对通用计算的性能进行了优化.许多应用程序具有特定的特性,可以利用这些特性来提高性能(尽管可能仅略微),超出了完全通用解决方案所提供的性能.与此同时,很多人都会编写自己的容器并最终导致性能下降,因为他们不能很好地理解问题,或者由于测试有限而导致从未发现的错误(相对于接近无限接近的大多数STL实现)测试).
>不,通常不会因为包含大量头文件而对运行时性能造成任何损害.

除了您的具体问题,如果您正在开发AAA游戏,您应该向同行寻求有关这些问题的指导.任何AAA工作室都会有至少一两个人,他们有资格以更高的细节水平为您提供建议.

最后,虽然STL和C标准库的某些部分对某些常见用例(例如std :: list,iostreams)的性能不是很理想,但其他部分通常都很好(std :: vector,std :: copy).没有适用于整个语言的规则……如果有的话,我们可能会使用其他语言!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读