提高蓄电池内存使用和效率
Boost accumulator memory usage and efficiency
我在c++中使用boost累加器从双精度向量中获取统计信息。每次我需要一个新的统计数据时,我调用一个自定义方法,通过创建累加器来获取它,用矢量值加载它,最后使用boost统计函数。
double Entity::min(void) {
accumulator_set< double, features< tag::min > > acc;
// Now load the vector into the accumulator.
acc = std::for_each( samples.begin(), samples.end(), acc );
// Specify namespace to avoid name clash of this min method
this->_min = boost::accumulators::min(acc);
return this->_min;
}
// etc. more methods for StdDev, mean, max etc.
我的问题是:在不同的方法重复累加器的每个创建(加上)向量内存需求?我知道我可以写一个"getstatistics"方法来一次获得它们,但是我特别想知道累加器的创建和加载是否每次至少使用与原始向量相同的内存。
谢谢大家皮特
您正在使用的算法适用于samples
集合,这是类Entity
的属性。该集合是vector模板的实例。
std::for_each
实例只作用于在构造时传递的集合的迭代器:samples.begin()
和samples.end()
。
标准迭代器专门设计用于抽象集合上的游标或指针的概念。它们不会以任何方式复制集合,因此在使用它们时不应该担心内存分配问题。
这里使用的特定accumulator_set
也不会产生集合的任何副本。它只是访问迭代器,比较当前最小候选值和当前集合的指向值,并将两者的最佳值保留到下一次迭代。
就目前而言,您所使用的标准部件都不会重复集合。
相关文章:
- 内存效率表示最短路径的方法?
- 内存效率:模板与基本数据类型
- 使数组的内存效率更高
- 内存效率-EIGEN :: vectorxd在循环中
- C 数组的内存效率
- 内存效率标准::地图替代
- 内存效率高 map<pair<int,int>, set<int>> alternative
- 效率与内存的权衡
- AES 内存效率
- 关于在C++中使用联合的内存效率
- 对于静态错误字符串,哪个的内存/性能效率更高,或者有替代方案
- 首先创建字符串,然后通过移动语义将其添加到 vector 或在 vector 中创建元素是否具有内存效率
- 5字节QByteArray的内存占用空间.5字节的quint64或QByteArray存储效率更高吗
- 需要进行矩阵运算时的内存效率
- 使用小数据类型是否会减少内存使用(来自内存分配而不是效率)
- 将声明一个全局变量时,做递归内存效率和速度更快
- 提高蓄电池内存使用和效率
- 从内存效率的角度来看,在c++ 11中返回一个字符串OK
- 内存和处理效率高的多维数据结构C++
- Numpy数组与c++向量在内存效率上的对比