C++ 游戏中的内存和性能
Memory and performance in C++ Game
我对 C++ 还是个新手,但我很快就掌握了,并且在 C# 方面也有经验。我想知道的是,我可以采取哪些性能安全措施来确保我的游戏 运行 高效运行。另外,在什么情况下我可能 运行 内存不足。堆栈或堆上有 2k 到 3k 个项目符号对象?我觉得stack一般比较快,但是听说太多会导致stack overflow。话虽这么说,到底多少算太多?
抱歉提出了太多问题,我只是想确保我设计的游戏引擎不会依赖于好的 PC 才能 运行 好。
首先,安全地编写您的游戏,只需要在性能分析和调试后担心内存布局等优化。
话虽这么说,但我必须驳斥堆栈比堆快的神话。重要的是缓存性能。
对于小的快速访问,堆栈通常更快,因为堆栈通常已经在缓存中。但是,当您在堆上迭代数千个项目符号对象时,只要您将它们连续存储(例如std::vector
,而不是std::list
),一切都应该是加载到缓存中,应该没有性能差异。
我对 C++ 还是个新手,但我很快就掌握了,并且在 C# 方面也有经验。我想知道的是,我可以采取哪些性能安全措施来确保我的游戏 运行 高效运行。另外,在什么情况下我可能 运行 内存不足。堆栈或堆上有 2k 到 3k 个项目符号对象?我觉得stack一般比较快,但是听说太多会导致stack overflow。话虽这么说,到底多少算太多?
抱歉提出了太多问题,我只是想确保我设计的游戏引擎不会依赖于好的 PC 才能 运行 好。
首先,安全地编写您的游戏,只需要在性能分析和调试后担心内存布局等优化。
话虽这么说,但我必须驳斥堆栈比堆快的神话。重要的是缓存性能。
对于小的快速访问,堆栈通常更快,因为堆栈通常已经在缓存中。但是,当您在堆上迭代数千个项目符号对象时,只要您将它们连续存储(例如std::vector
,而不是std::list
),一切都应该是加载到缓存中,应该没有性能差异。