ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3979178 C++でバイナリデータのコピープログラムの作り方
質問者:poppox2 現在、バイナリのデータを高速でコピーするルーチンを
考えています。

既存データ(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)

一番早くコピーする方法をお教え願えませんでしょうか?
困り度:
  • 困っています
質問投稿日時:
08/04/27 08:31
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1 環境を提示しないなら環境依存のチューニングはできませんし、
提示の条件で、最適化に有利な制限も余りありません。

無理な最適化は、汎用性を犠牲にするトレードオフです。
過度な最適化は強い制約/前提を課すことになります。
当該アドレス間で共有のメモリにする(コピーしない)とか、
専用ハードで処理するとか…。

その程度の処理なら、一番シンプルにコピーするコードを書いて
コンパイラの最適化に任せるのが、たいていは最も早い方法です。
昨今のコンパイラは、変に人間ががんばるより優秀です。
回答者:MrBan
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
08/04/27 11:06
この回答へのお礼すみません。初心者的な質問で申し訳ありません。
コンパイラ依存もあるので、質問内容が抽象すぎでした。
確かにシンプルにコードを書くほうがよいみたいですね。

目標としてはPen4 3GHz(Mem2GHz)でVC.netにてコードを書き
1GBのデータを5sec位でコピーしようと思っています。
データが大量にあるので1データあたり上記時間で
処理したいと思っています。

一応べたに書いた場合に、10sec位かかってしまいましたので。。。
もう少し格闘してみます。

ご回答、ありがとうございます。