在游戏开发中有大量的C/C++,在商业应用程序C#中。我见过C/C++开发人员对一行代码如何转换为程序集表示关注。在.NET中,很少有人进入IL。
在C#中,“微优化”被反对,这是罕见的,而且通常是浪费时间。在游戏开发中,情况似乎并非如此。
是什么具体造成了这种不一致?游戏会不断地推动硬件的极限吗?如果是的话,随着硬件的改进,我们应该期望更高水平的语言取代游戏产业吗?
我不想讨论C#作为游戏开发郎的可行性。我知道在某种程度上已经做到了。专注于微观优化。具体来说,游戏开发和应用程序开发之间的区别。
更新
我的意思是现代的,大规模的发展。例如MMORPG,Xbox,PS3,Wii.
发布于 2011-03-31 15:10:33
在业务应用程序中,CPU并不总是瓶颈。业务应用程序将花费大部分时间等待。例如:
这就是为什么优化处理性能的代码不会增加太多的价值。
首要考虑是:
发布于 2011-05-11 15:31:01
在商业应用中,微秒是非常罕见的。在游戏中,这是生活中的一个事实。
如果你想让一个游戏以每秒60帧的速度运行,你有16.67毫秒的时间来完成所有需要做的事情--输入,物理,游戏逻辑,音频,网络,人工智能,渲染等等;如果你幸运的话,你可以跑30英尺,有33.3毫秒的时间。如果一个框架花了太长时间,你的评论就会受到影响,你的玩家会在网上论坛上充满胆汁,你也不会像你可能卖的那么多(更别提对你的职业自豪感的打击了),如果你真的不走运,你会发现你的团队以编写商业应用程序为生。
当然,游戏开发人员并不担心每一行,因为有了经验和一个体面的分析器,您会了解哪些行需要担心。另一方面,这些担忧有时会触及商业世界中可能被认为是纳米优化而不是微观优化的东西。
不要指望任何高级语言都会把C++踢出家门,除非你提供类似的、可预测的性能。
发布于 2011-03-31 13:58:21
好的,您已经看到了C和C++开发人员对单个行的痴迷。我敢打赌他们不会纠结于每一条线。
在某些情况下,您希望获得最大的性能,这包括许多游戏。游戏一直试图突破性能限制,以求比它们在同一硬件上的竞争对手更好看。这意味着您应用了所有常见的优化技术。从算法和数据结构开始,然后从那里开始。通过使用分析器,可以找到花费的时间最多的地方,以及从微优化中获得显著收益的地方。
这并不是因为语言迫使人们这样做,而是人们根据自己想做的事情来选择语言。如果您想从程序中提取最后一点性能,您将不会编写C#并将其编译到CLR,并且希望JIT编译器(或其他什么)做得很好,您可以在很大程度上控制输出。您将使用C或C++ (可能是C++的一个受限子集),并研究汇编语言输出和分析器结果。
有很多人使用C和C++,只要翻译的速度足够快,就不用太担心翻译的细节。
https://softwareengineering.stackexchange.com/questions/63952
复制相似问题