操纵2D阵列的可能优化
possible optimizations for manipulating a 2d array
我有一个由2D chars表示的图像,我需要对此图像执行一些操作,并将结果存储在另一个2D阵列中,这些操作因计算邻居的平均值而异单元重新排序行。我可以采取哪些优化来获得更好的性能?欢迎任何可能的技术(例如参考的局部性,内联汇编,...)
)我在Linux X86_64机器上使用c
ps:我有一个原始的颜色图像,每个像素由一组RGB值表示。
- 首先,分配每个RGB的4个字节。
- 有一个针对每一行的开头的指针,然后可以使用指针Exchange进行改组
-
将您的API计划为
void process_row(int *out_row, int *in_row, int *row_above, int *row_below);
-
可以与正常整数算术并行计算一些RGB计算。
- 例如。一个人可以添加4个没有溢出的人,然后只需将结果右移2位
带有00111111111111111111111111111B的面具b
(当然,这需要预处理和后处理) - 在
00 rr 00 gg 00 bb 00 aa
的64位处理器包装上也是可行的方法
- 例如。一个人可以添加4个没有溢出的人,然后只需将结果右移2位
- 可能更容易的方法是使用__sse Internics,从中只有一小步...
- 内联汇编器
- 还有一个软件包兽人,它实现了便携式Simd。
您可以使用1D数组而不是2D数组,这将大大提高高速缓存命中率。这将优化程序运行时间。
相关文章:
- 空基优化子对象的地址
- 2D数组来自文本输入,中间有空格
- 将值指定给向量(2D)的向量中的某个位置
- 如何使用用户输入在C++中正确填充2D数组
- 关闭||运算符优化
- 如何在C++中检查2D数组中负值的输入验证
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- 返回值优化:显式移动还是隐式
- 人脸跟踪arduino代码的优化
- 四边形的 2D 旋转
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 打印第二列时的2d字符矢量打印空间
- 优化2D旋转
- 操纵2D阵列的可能优化
- 2D矢量优化
- c++2D TileMap渲染优化
- 迭代非线性最小二乘优化3d到2d投影
- 优化 2D 阵列C++