相关疑难解决方法(0)

在性能方面使用std :: memcpy()或std :: copy()会更好吗?

memcpy如下所示使用它是否更好,或者std::copy()在性能方面更好用?为什么?

char *bits = NULL;
...

bits = new (std::nothrow) char[((int *) copyMe->bits)[0]];
if (bits == NULL)
{
    cout << "ERROR Not enough memory.\n";
    exit(1);
}

memcpy (bits, copyMe->bits, ((int *) copyMe->bits)[0]);
Run Code Online (Sandbox Code Playgroud)

c++ optimization performance

154
推荐指数
5
解决办法
11万
查看次数

为什么memcpy()和memmove()比指针增量更快?

我复制从N个字节pSrcpDest.这可以在一个循环中完成:

for (int i = 0; i < N; i++)
    *pDest++ = *pSrc++
Run Code Online (Sandbox Code Playgroud)

为什么这比memcpy或慢memmove?他们用什么技巧加快速度?

c c++ loops

90
推荐指数
6
解决办法
3万
查看次数

在什么情况下我应该在C++中使用memcpy而不是标准运算符?

我什么时候可以memcpy使用它获得更好的性能?如何使用它?例如:

float a[3]; float b[3];
Run Code Online (Sandbox Code Playgroud)

是代码:

memcpy(a, b, 3*sizeof(float));
Run Code Online (Sandbox Code Playgroud)

比这

a[0] = b[0];
a[1] = b[1];
a[2] = b[2];
Run Code Online (Sandbox Code Playgroud)

c++ memory performance allocation copying

32
推荐指数
5
解决办法
3万
查看次数

当__builtin_memcpy被libc的memcpy替换时

memcpyGCC中有一个C99/posix 函数版本:__builtin_memcpy.

有时它可以被GCC替换为内联版本的memcpy,在其他情况下,它被替换为调用libc的memcpy.例如,这里注意到:

最后,在编译器注释中,__ builtin_memcpy可以回退到发出memcpy函数调用.

这个选择的逻辑是什么?在其他gcc兼容的编译器中逻辑是否相同,如clang/llvm,intel c ++编译器,PCC,suncc(oracle studio)?

当我更喜欢使用__builtin_memcpy而不是简单的memcpy?

gcc c99 built-in memcpy

16
推荐指数
1
解决办法
1万
查看次数

复制循环的效率是否低于memcpy()?

我开始研究IT,现在我和朋友讨论这段代码是否效率低下.

// const char *pName
// char *m_pName = nullptr;

for (int i = 0; i < strlen(pName); i++)
    m_pName[i] = pName[i];
Run Code Online (Sandbox Code Playgroud)

他声称例如memcopy会像上面的for循环那样做.我不知道这是不是真的,我不相信.

如果有更有效的方法或者效率低下,请告诉我原因!

提前致谢!

c++ performance loops memcpy strlen

3
推荐指数
2
解决办法
2279
查看次数

标签 统计

c++ ×4

performance ×3

loops ×2

memcpy ×2

allocation ×1

built-in ×1

c ×1

c99 ×1

copying ×1

gcc ×1

memory ×1

optimization ×1

strlen ×1