gpt4 book ai didi

c++ - 算法:取出数组的每第 4 项

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:20 25 4
gpt4 key购买 nike

我有两个巨大的数组(下面代码中的 int source[1000]、dest[1000],但实际上有数百万个元素)。源数组包含一系列 int,我想每 4 个复制其中的 3 个。

例如,如果源数组是:

int source[1000] = {1,2,3,4,5,6,7,8....};
int dest[1000];

这是我的代码:

for (int count_small = 0, count_large = 0; count_large < 1000; count_small += 3, count_large +=4)
{
dest[count_small] = source[count_large];
dest[count_small+1] = source[count_large+1];
dest[count_small+2] = source[count_large+2];
}

最后,dest 控制台输出将是:

1 2 3 5 6 7 9 10 11...

但是这个算法太慢了!是否有我可以使用/包含的算法或开源函数?

谢谢你:)

编辑:我的数组的实际长度约为 100 万 (640*480*3)

编辑 2:处理这个 for 循环大约需要 0.98 秒到 2.28 秒,而其他代码只需要 0.08 秒到 0.14 秒,所以设备至少 90% 的 cpu 时间只用于循环

最佳答案

好吧,那里的渐近复杂性和它会得到的一样好。通过将值加载为四个 4 路 SIMD 整数,将它们改组为三个 4 路 SIMD 整数,然后将它们写回,您可能能够获得稍微更好的性能,但即使那样也不太可能更快。

尽管如此,处理 1000 个元素(编辑:或 100 万个元素)的时间将变得微不足道。如果您认为这是您程序中的瓶颈,那您就错了。

关于c++ - 算法:取出数组的每第 4 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com