【发布时间】:2009-10-16 19:47:34
【问题描述】:
我们正在尝试以高性能的方式使用不等式运算 和 >= 比较两个大小相同的 signed int 值的原生数组。由于比较了许多值,true/false 结果将被存储在与输入大小相同的char 数组中,其中0x00 表示false,0xff 表示true。
为此,我们使用了英特尔 IPP 库。问题是我们从图像和视频处理库中找到的名为ippiCompare_* 的执行此操作的函数仅支持unsigned char (Ipp8u)、signed/unsigned short (Ipp16s/Ipp16u) 和@987654334 类型@ (Ipp32f)。不直接支持signed int(Ipp32s)
我(仅)设想了两种可能的解决方法:
将数组转换为直接支持的类型之一并在更多步骤中执行比较(它将变成大小两倍的短数组或大小四倍的 char 数组)并合并中间结果。
使用另一个函数直接支持来自 IPP 或另一个库的
signed int数组,该函数在性能方面可以做相当的事情。
但可能还有其他创造性的方式......所以我请求你帮忙! :)
PS:使用英特尔 IPP 的优势在于大型阵列的性能提升:它同时使用多值处理器功能和多个内核(可能还有更多技巧)。如此简单的循环解决方案不会像 AFAIK 那样快。
PS2:ippiCompare_* doc的链接
【问题讨论】:
标签: c++ arrays performance comparison intel-ipp