【发布时间】:2025-12-10 10:25:05
【问题描述】:
我有一个多线程应用程序,其中我的线程利用率非常低(在每个线程 1%-4% 的范围内,线程数少于处理器)。在调试器中,它似乎在 vector::push_back 中花费了大量时间,特别是在 push_back 期间发生的新放置。我尝试使用reserve 来避免向量扩展其容量并复制所有内容,但这似乎不是问题。注释掉 vector::push_backs 会导致更好的线程利用率。
这个问题出现在 uint64_t 的向量上,所以它似乎不是复杂对象构造的结果。我尝试过使用标准分配器和自定义分配器,它们的执行方式相同。这些向量正被分配它们的同一线程使用。
【问题讨论】:
-
您应该添加您正在使用的具体平台/编译器,因为这些类型的与性能相关的问题可能与某些特定的实现有关,而不是与语言本身有关
标签: c++ memory-management