我有一个在我的程序中经常使用的向导类。不幸的是,向导需要一段时间才能加载,主要是因为 GUI 框架非常慢。我多次尝试重新设计向导类(比如使对象可重用,因此它只创建一次)但我总是在某处碰壁。所以,在这一点上,将这只野兽的 50 个实例加载到一个 vector 中,然后在我使用它们时将它们弹出是不是一个巨大的丑陋的黑客攻击?这样,延迟只会在启动时被注意到,此后运行良好。太多的黑客?这样的构造是否常见?
最佳答案
在游戏中,我们通常首先分配和构建游戏 session 中所需的一切。然后,如果对象的生命周期较短,我们将对其进行回收,尝试在游戏 session 运行时获得 0 次分配/取消分配。
所以不,这不是真正的 hack,只是让计算机做更少的工作以提高速度是很有意义的。一种策略是“缓存”,也就是说,通常首先计算非变体数据,然后使用动态数据运行。在可能和必要的情况下,必须在使用前准备内存分配、对象构造等。
关于c++ - 创建我的对象花费的时间太长。在启动时创建大量实例以加快速度是否是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3898173/