首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACE/TAO性能问题

ACE/TAO性能问题
EN

Stack Overflow用户
提问于 2015-01-28 20:29:17
回答 1查看 165关注 0票数 1

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

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 18:47:27

来自ATCD邮件列表的Will Otte :我猜您有如下代码:

代码语言:javascript
复制
while (something) {
    CORBA::ULong pos = seq.length ();
    seq.length (pos+1);
    seq[pos] = some_value;
}

并且观察到与

代码语言:javascript
复制
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序列没有为您提供此功能,因此如果您反复调整大小,您将看到性能不佳,因为每次调整大小时,您将不得不为新缓冲区的分配和将所有现存元素复制到新的基础缓冲区的时间付出代价。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28201802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档