gpt4 book ai didi

c - 有多少单词使 memcpy 值得?

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:12 28 4
gpt4 key购买 nike

我正在生成代码,其中我恰好将 n 个单词从一个内存位置复制到另一个非重叠内存位置。 n 是静态已知的。

目前,我发出大量加载指令,然后是大量存储指令,但我怀疑从 n 的某个值开始,调用 memcpy会更快。

是否有关于必须复制多少个单词才能使 memcpy 值得调用的众所周知的准则?

最佳答案

最优化的代码将取决于您的处理器架构。数据路径、寄存器大小、可用数据寄存器的数量和缓存是决定最优化代码的一些参数。

我不知道你的具体编译器会如何处理memcpy函数,但有几点可能会帮助你写出优化的复制代码:

  • 如果适用,请始终检查生成的汇编代码,以了解当前代码是否是最优化的代码。

  • 如果您有 n 个数据寄存器空闲,则只加载 n 个值并存储它们以避免需要从堆栈分配内存。处理寄存器比处理其他内存要快得多。

  • 如果您的处理器有一些寻址模式可以在使用它们后自动递增地址,如果这是您想要做的,那么请确保生成的程序集正在这样做。

  • 读取连续值将提高缓存性能,从而为您提供更多优化。

  • 尽可能尝试使用加载和存储指令的完整数据路径,如果 SIMD 加载和存储指令可用,请确保使用它们。

关于c - 有多少单词使 memcpy 值得?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481900/

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