gpt4 book ai didi

c++ - ACE/TAO 性能问题

转载 作者:行者123 更新时间:2023-11-30 05:48:24 25 4
gpt4 key购买 nike

ACE/TAO length() 函数花费太多时间。因为它在设置长度时使用 new 运算符创建了那么多内存。任何人都知道只需在 TAO 中设置长度即可替代长度函数。

谢谢,

最佳答案

来自 ATCD 邮件列表中的 Will Otte:我猜你有这样的代码:

while (something) {
CORBA::ULong pos = seq.length ();
seq.length (pos+1);
seq[pos] = some_value;
}

并且观察到与

相比性能很差
std::vector<foo> vec;
while (something) {
size_t pos = vec.size ();
vec.resize (pos + 1);
vec[pos] = foo (bar); // or the much more succinct vec.push_back (foo (bar));
}

对吗?

答案很可能是因为您的 STL 实现正在帮助您解决问题并在您使用调整大小时提供几何增长。 C++ 标准没有任何类似的要求(对于调整大小;push_back 保证按几何级数增长),所以您可能很幸运,不应该依赖于这种行为。

TAO 序列不为你提供这个,所以如果你反复调整大小,你会看到性能很差,因为每次调整大小时,你都必须为分配新缓冲区和是时候将所有现存元素复制到新的底层缓冲区了。

关于c++ - ACE/TAO 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201802/

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