- 主题:这个编译器会优化吗?如果不会,自己怎么优化?
简而言之,我从一个队列中取数据
while (!shutdown)
{
std::vector<std::string> dataArray;
dataArray.reverse(16);
int dataSize = q.dequeue_bulk(dataArray, dataArraySize);
}
每次循环都要对 vector revese,代价是不是很高?如果把 vector 定义在循环外面,那么每次取到数据后,怎么清空数据?用 clear 会导致 vector 里面的元素调用析构带来性能损失。用 resize (0) 是否能达到效果?
std::vector<std::string> dataArray;
dataArray.reverse(16);
while (!shutdown)
{
int dataSize = q.dequeue_bulk(dataArray, dataArraySize);
// process data
dataArray.resize(0); // 这样是否可行?
}
--
FROM 54.241.198.*
啊,你没看清楚我的问题吧。。。
【 在 lwp 的大作中提到: 】
: ,?确定不是reserve?
--
FROM 218.76.62.*
haha ,是的,写错了。
算了,那我就不调用 reverse 了。
【 在 z16166 的大作中提到: 】
: 你单词拼写错误,reserve不是reverse
: reserve()提到循环外面是对的。
: 但析构都不要,这种优化确实有必要不?不要做没必要的优化。
: ...................
--
FROM 218.76.62.*