我有一种方法负责获取 openGl 三角形网格并将其转换为 3ds 文件。这种方法称为exportShape()
. 要执行此转换exportShape()
,会创建一堆非常大的向量和 hash_map。目前,从调用的最后一行exportShape()
代码到下一行代码exportShape()
最多可能需要 5 分钟。我确信所有这些时间都花在了清空非常大的局部变量堆栈上,因为如果我将所有局部向量和 hash_maps 移动到全局范围,该方法会立即存在,正如我所期望的那样。
为什么我能够在几秒钟内填充所有这些本地数据结构,而将它们从堆栈中弹出需要几分钟?如何优化离开exportShape()
和清除堆栈的过程?
编辑:
被删除的对象只包含字符串、双精度和整数——没有自定义析构函数。
我几乎解决了我自己的问题。在发布模式下运行是一个巨大的性能提升(~20 倍)。尽管如此,该过程仍会挂起几秒钟。还有什么可以做的吗?