首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化的memcpy

优化的memcpy
EN

Stack Overflow用户
提问于 2009-07-30 21:35:41
回答 8查看 14K关注 0票数 20

在C++中有没有比memcpy()更快的替代品?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-30 21:39:39

不太可能。您的编译器/标准库可能会有一个非常高效且量身定制的memcpy实现。而memcpy基本上是将内存的一部分复制到另一部分的最低api。

如果你想进一步加速,找到一种不需要任何内存复制的方法。

票数 20
EN

Stack Overflow用户

发布于 2009-07-30 21:51:38

首先,给你一句忠告。假设编写您的标准库的人并不愚蠢。如果有更快的方法来实现一个通用的memcpy,他们早就这么做了。

其次,是的,还有更好的选择。

  • 在C++中,使用std::copy函数。它做同样的事情,但它1)更安全,2)在某些情况下可能更快。它是一个模板,这意味着它可以专门针对特定的类型,这使得它可能比一般的C memcpy.
  • 更快,或者,您可以使用您对特定情况的高级知识。memcpy的实现者必须编写它,以便它在任何情况下都能很好地执行。如果您有关于需要它的情况的特定信息,您可能能够编写一个更快的版本。例如,您需要复制多少内存?它是如何对齐的?这可能会让您为这个特定的情况编写一个更有效的memcpy。但在大多数其他情况下(如果它可以工作的话)

就不会那么好了

票数 21
EN

Stack Overflow用户

发布于 2009-07-30 22:41:22

优化专家Agner Fog发布了优化内存函数:http://agner.org/optimize/#asmlib。不过,它是在GPL之下的。

前段时间,阿格纳说这些函数应该取代GCC的内置函数,因为它们的速度要快得多。我不知道从那以后是否有人这么做过。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1209529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档