gpt4 book ai didi

C 数组 = 比 memcpy() 更快的数组

转载 作者:行者123 更新时间:2023-11-30 18:17:12 26 4
gpt4 key购买 nike

我有一段 C 代码,我正在尝试优化它,其中涉及将数组 a 设置为 b。我目前正在使用 memcpy 来实现这一点,它可以工作,但速度不够快。即

double a[4] = {1.0, 2.0, 3.0, 4.0};
double b[4];
memcpy(b, a, sizeof(a));

这是一个基本示例,我的程序类似,但最多使用 9000 个 double 。我知道使用指针可以节省很多时间,但我不知道该怎么做。非常感谢您的帮助。

编辑:我不需要保留可以丢弃的数组。我只需要从a转移到b。

最佳答案

如果memcpy()不起作用,你就会陷入困境。对于大型操作数,memcpy() 函数是受内存限制的,因此不可能* 击败它。唯一的选择是重新设计您的程序,这样它就不需要复制数组。

(“内存限制”意味着 memcpy() 受到 RAM 或内存 Controller 速度的限制。函数可以是 CPU 限制、内存限制、IO 限制等。 )

在大多数平台上,memcpy() 是用手工调整的汇编语言编写的,并经过严格优化以利用各种处理器功能(例如 SSE)。尝试使用多个内核是行不通的,因为即使您将工作分散到更多的内核上,您也不会将工作分散到更多的 RAM 或更多的内存 Controller 上。

脚注

* 某些平台或工具链的 memcpy() 可能优化不佳。

关于C 数组 = 比 memcpy() 更快的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16665336/

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