数组分配后跟 memcpy 或 vector with reserve?
array allocation followed by memcpy or vector with reserve?
我有一个要压缩的字节数组。(平均大小为 400 字节)。我有两个 options.I 保留一个 400 字节的数组并在 it.Finally 中填充位表示压缩大小是 300 字节,所以我使用 memcpy 将这些字节复制到大小为 300 的数组并发送。
否则我可以保留一个向量并保留 400 字节并使用 push_back。(这里我可以避免 memcpy)。
我每秒得到大量数组。那么在性能关键场景中,哪种选择会提供更好的性能?
如果需要快,您肯定不想 push_back
每个单独的字节一次一个;您想进行批量传输,就像 memcpy
所做的那样。但是您可以使用 std::copy
,这应该同样有效。对于像 char
或 int
这样的基本类型,使用 std::vector
和 std::copy
基本上是原始数组和 memcpy
.
之上的一层
我有一个要压缩的字节数组。(平均大小为 400 字节)。我有两个 options.I 保留一个 400 字节的数组并在 it.Finally 中填充位表示压缩大小是 300 字节,所以我使用 memcpy 将这些字节复制到大小为 300 的数组并发送。 否则我可以保留一个向量并保留 400 字节并使用 push_back。(这里我可以避免 memcpy)。 我每秒得到大量数组。那么在性能关键场景中,哪种选择会提供更好的性能?
如果需要快,您肯定不想 push_back
每个单独的字节一次一个;您想进行批量传输,就像 memcpy
所做的那样。但是您可以使用 std::copy
,这应该同样有效。对于像 char
或 int
这样的基本类型,使用 std::vector
和 std::copy
基本上是原始数组和 memcpy
.