gpt4 book ai didi

c++ - 模板类的创 build 成了主要瓶颈

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:16 24 4
gpt4 key购买 nike

我正在尝试编写一个科学图形库,它可以工作,但我遇到了一些性能问题。创建图形时,我为节点使用模板类并执行类似

for(unsigned int i = 0; i < l_NodeCount; ++i) 
m_NodeList.push_back(Node<T>(m_NodeCounter++));

即使在节点类的构造函数中几乎什么也没有发生(分配了一些变量)这部分是我程序的主要瓶颈(当我使用超过一百万个节点时),特别是在 Debug模式下它变得太根本无法运行。

有没有更好的方法来同时创建所有这些模板类,而不必每次都调用构造函数,或者我是否必须在没有模板的情况下重写它?

最佳答案

如果构造函数几乎什么都不做,如您所说,瓶颈很可能是新内存的分配。 vector 是动态增长的,每次它的内存耗尽时,它都会保留新的内存并将所有数据复制到那里。添加大量对象时,这种情况会非常频繁地发生,并且变得非常昂贵。这可以通过调用来避免

m_NodeList.reserve(l_NodeCount);

通过此调用, vector 将分配足够的内存来容纳 l_NodeCount 对象,并且在批量添加元素时您不会有任何昂贵的重新分配。

关于c++ - 模板类的创 build 成了主要瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com