c++ - 创建我的对象花费的时间太长。在启动时创建大量实例以加快速度是否是一种不好的做法?

标签 c++ design-patterns

我有一个在我的程序中经常使用的向导类。不幸的是,向导需要一段时间才能加载,主要是因为 GUI 框架非常慢。我多次尝试重新设计向导类(比如使对象可重用,因此它只创建一次)但我总是在某处碰壁。所以,在这一点上,将这只野兽的 50 个实例加载到一个 vector 中,然后在我使用它们时将它们弹出是不是一个巨大的丑陋的黑客攻击?这样,延迟只会在启动时被注意到,此后运行良好。太多的黑客?这样的构造是否常见?

最佳答案

在游戏中,我们通常首先分配和构建游戏 session 中所需的一切。然后,如果对象的生命周期较短,我们将对其进行回收,尝试在游戏 session 运行时获得 0 次分配/取消分配。

所以不,这不是真正的 hack,只是让计算机做更少的工作以提高速度是很有意义的。一种策略是“缓存”,也就是说,通常首先计算非变体数据,然后使用动态数据运行。在可能和必要的情况下,必须在使用前准备内存分配、对象构造等。

关于c++ - 创建我的对象花费的时间太长。在启动时创建大量实例以加快速度是否是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3898173/

相关文章:

oop - 如何在OOP中设计嵌套多态性?

c - 在 C 中记录 ".h"文件使用模式的好引用是什么?

CodeIgniter:在 CodeIgniter 中创建库和帮助程序的决策

c++ - 从函数返回值时使用 c_str() 的差异

python - 如何使用 Python 从 gdb 访问 C++ 程序的变量

c++ - 如何从 MSXML::IXMLDOMElement 中获取值数据

design-patterns - 多个返回语句的圈复杂度

c++ - std::move(*this) 是一个好的模式吗?

c++ - OOP C++、虚函数和新运算符

java - 使用复合 Material 时如何确定并转换为特定对象?