What is the fastest portable way to copy an array in C++

后端 未结 8 516
面向向阳花
面向向阳花 2020-12-30 02:11

This question has been bothering me for some time. The possibilities I am considering are

  1. memcpy
  2. std::copy
  3. cblas_dcopy

Does a

相关标签:
8条回答
  • 2020-12-30 03:02

    Just Profile your application. You will likely find that copying is not the slowest part of it.

    0 讨论(0)
  • 2020-12-30 03:06

    memcpy is probably the fastest way to copy a contiguous block of memory. This is because it will likely be highly optimized to your particular bit of hardware. It is often implemented as a built-in compiler function.

    Having said that, and non POD C++ object is unlikely to be contiguous and therefore copying arrays of C++ objects using memcpy is likely to give you unexpected results. When copying arrays (or collections) of C++ objects, std::copy will use the object's own copy semantics and is therefore suitable for use with non POD C++ objects.

    cblas_dcopy looks like a copy for use with a specific library and probably has little use when not using that library.

    0 讨论(0)
提交回复
热议问题