Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在C语言中加速数组中的三维查找表_Arrays - Fatal编程技术网

Arrays 在C语言中加速数组中的三维查找表

Arrays 在C语言中加速数组中的三维查找表,arrays,Arrays,我有一个三维查找表LUT[宽度][高度][深度]。我必须将此LUT应用于大图像(4k x 4k)中的每个像素,并且我需要改进性能。我尝试了以下方法: u8 lut[1024][1024][32]; u16 image[4096][4096]; u16 image2[4096][4096]; for (z = 0; z < 32; z++) {    for (y = 0; y < 4096; y++) { for (x = 0; x < 4096; x++)

我有一个三维查找表LUT[宽度][高度][深度]。我必须将此LUT应用于大图像(4k x 4k)中的每个像素,并且我需要改进性能。我尝试了以下方法:

u8 lut[1024][1024][32];
u16 image[4096][4096];
u16 image2[4096][4096];

for (z = 0; z < 32; z++) {
    for (y = 0; y < 4096; y++) {
        for (x = 0; x < 4096; x++) {
             ci1 = colorindex = image[x + y*4096]
             ci2 = colorindex2 = image2[x + y*4096]
             result_image[x + (y*4096) + (z*4096*4096)] = lut[ci + (1024*ci2) + (1024*1024)*z];
        }       
     }
u8 lut[1024][1024][32];
u16图像[4096][4096];
u16图像2[4096][4096];
对于(z=0;z<32;z++){
对于(y=0;y<4096;y++){
对于(x=0;x<4096;x++){
ci1=颜色索引=图像[x+y*4096]
ci2=colorindex2=image2[x+y*4096]
结果_图像[x+(y*4096)+(z*4096*4096)]=lut[ci+(1024*ci2)+(1024*1024)*z];
}       
}

但是结果并不好。有没有办法改善这一点?

单是上面的循环就需要大约5亿次浮点运算。当前的运行时间是多少,您期望的是什么?0次浮点运算。没有浮点运算。有没有更好的方法用C做查找表?我使用的是ARM SoC Cortex A8。有没有办法利用类似SIMD的N使用C语言还是使用库?