• ベストアンサー

C++でバイナリデータのコピープログラムの作り方

現在、バイナリのデータを高速でコピーするルーチンを 考えています。 既存データ(Data A) を 新規データ(Data B)、新規データ(Data C)にコピーするときに、3byteずつコピーしたいのですが。 Data BとData Cへは3Byteを交互にコピーします。 (以下のようになります) aaa bbb ccc ddd eee (←コピー元 Data A) B C B C B (←コピー先 Data B,C) 一番早くコピーする方法をお教え願えませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

環境を提示しないなら環境依存のチューニングはできませんし、 提示の条件で、最適化に有利な制限も余りありません。 無理な最適化は、汎用性を犠牲にするトレードオフです。 過度な最適化は強い制約/前提を課すことになります。 当該アドレス間で共有のメモリにする(コピーしない)とか、 専用ハードで処理するとか…。 その程度の処理なら、一番シンプルにコピーするコードを書いて コンパイラの最適化に任せるのが、たいていは最も早い方法です。 昨今のコンパイラは、変に人間ががんばるより優秀です。

poppox2
質問者

お礼

すみません。初心者的な質問で申し訳ありません。 コンパイラ依存もあるので、質問内容が抽象すぎでした。 確かにシンプルにコードを書くほうがよいみたいですね。 目標としてはPen4 3GHz(Mem2GHz)でVC.netにてコードを書き 1GBのデータを5sec位でコピーしようと思っています。 データが大量にあるので1データあたり上記時間で 処理したいと思っています。 一応べたに書いた場合に、10sec位かかってしまいましたので。。。 もう少し格闘してみます。 ご回答、ありがとうございます。

すると、全ての回答が全文表示されます。