![]() |
1
1
如果你希望有很多重复的
,并且可以
有效地
使用获得水平最小值
这会将唯一值转换为0xFF,一次一组重复值。 通过v/hmin的环载dep链保留在向量寄存器中;只有环路分支需要霓虹灯->整数 最小化/隐藏霓虹灯->整数/ARM惩罚
展开8,无分支打开
调整展开因子,使其足够大,以便通常不需要对大多数输入向量执行另一轮SIMD操作。如果几乎所有向量最多有5个唯一值,则按5展开,而不是按8展开。
而不是传输多个
或者,如果在单个向量的不同元素中有来自不同输入向量的值,则可以使用垂直操作一次为多个输入向量添加结果,而无需进行水平操作。
几乎可以肯定,这方面还有优化的空间,但我对ARM或ARM性能细节不太了解。霓虹灯很难用于任何有条件的用途,因为霓虹灯的性能损失很大->整数,与x86完全不同。
Glibc has a NEON
加快对scalar ARM版本的重复调用:每次将256字节缓冲区归零都会很昂贵,但我们不需要这样做。 使用序列号以避免需要重置 :
您可以将直方图设置为
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |