在特征c++中重复向量的最快方法
Fastest way to repeat a vector in Eigen c++
我有两个向量:
Eigen::Array2d A;
Eigen::Array4d B;
基本上,向量A包含一些类似的值
0.3
0.7
这个想法是,我想得到向量B如下
0.3
0.3
0.7
0.7
最快的方法是什么?我想要"最快"的方式,因为我必须做很多次这种操作。我知道我可以混合使用replicate
、transpose()
和Map
函数来实现,但速度不会那么快。
我应该使用指针吗?假设B的前两行会指向A的第一行,而B的最后两行会指A的最后一行?这有道理吗?
也许是一个简单的"for"循环
假设您的矢量包含双精度:
for(int i = 0; i < A.rows(); i++){
double cur = A(i);
B(2*i) = cur;
B(2*i + 1) = cur;
}
Eigen倾向于优化向量上的循环。临时是为了避免A(i(的多次访问操作。您还需要正确设置行主/列主存储顺序,以便尽可能快地访问内存。
我不能保证这是最快的方法,因为我还没有对其进行基准测试,但我的直觉告诉我,这将比同时使用几个内置的特征函数更快。
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 声明高维向量的更简洁的方法
- 在C++中初始化向量映射的最有效方法
- C++11 迭代向量的新方法?
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- 有什么方法可以将具有不同模板参数的模板类实例放入向量中?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 访问类成员向量最后一项的正确方法
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- 方法向量的新/分配的复杂性::p ush_back
- C++调用另一个类中的类方法向量
- 自己的"Insert"方法(向量)函数模板
- 最有效的计算集合A对集合B的补的方法(向量)