をstd::vector<std::uint8_t>
複製する必要があります。これは、コピー コンストラクターを呼び出すだけで実行できます。
私のプロファイリング結果は、Microsoft Visual C++ (msvc100) 実装がstd::uninitialized_copy
内部で使用していることを示しています。これにより、すべての要素が 1 つずつコピーされます。この場合、メモリのブロック全体を一度にコピーすることで、より最適化されたコピーを実行できます (memcpy
そうかもしれません)。
つまり、これは大幅な最適化になる可能性があります。ベクターにそのような最適化された方法を強制的に使用させる方法はありますか?
注: を使用してみstd::basic_string<std::uint8_t>
ましたが、パフォーマンスは向上していますが、他にも問題があります。