2012-05-08 9 views
0

説明:保存CPUサイクル(パフォーマンスを向上させる)

は、私は全体のパフォーマンスを向上させるために自分のアプリケーションを分析していますし、別のボトルネックの中で私は、主要の1つの識別されていますパフォーマンスを低下させている領域は、_wordcopy_fwd_dest_aligned命令/機能から来ているようです。長さと長さと値の形式で文字列を含む -

  • 機能は、バッファストリームを取得 -

    は、以下の問題の簡単な説明です。

  • len(マシンアラインメントなどを確認するためのコード)を読んでください。
  • 文字配列を読み取って文字列に割り当てます。 CPUサイクルを定量化レポートから確認されている今、

    read_buf(max_len) 
    v.assign((char*)pdata,max_len) 
    

    の下に、私は_wordcopy_fwd_dest_alignedで重い使用率を見るよう

PusedoCode
pusedoコードが見えます。また、 - Improve CPU Cycles for performanceのような報告書から、私はその考え方を、代替アプローチを使用して減らすことができることを知っています。

質問

  1. /は、このように私に(でも、メモリのコストで)パフォーマンスを得る_wordcopy_fwd_dest_aligned使用を排除削減上記のコード、のための簡単な選択肢があります。
  2. 上記のコードがうまくいかない場合は、上記のコードに対して推奨される回避策はありますか?しかし、最終的なo/pは文字列自体にある必要があります。

PS:
。コードは分散環境で動作する必要があるため、単語の配置などを処理する必要がありますので、質問リストのオプション(2)については少し気にしないでください。
b。私たちはstlportライブラリを使用していますので、これには微調整が必​​要です/これが問題の原因になりますか? std::string v.assign(...)という単純なコードは表示されませんでした_wordcopy_fwd_dest_aligned

+0

どのようなアーキテクチャですか?どのCPUモデルですか?複数のCPUモデルで実行する必要がありますか? –

答えて

4

これは最適化されたコピールーチンです。パフォーマンスを向上させるには、コピーを削除するか、一部のプロセッサモデルとの互換性を犠牲にする必要があります。

+1

+1。コピーする(または他のコードを実行する)方法は、それをまったく実行しないことです。 –

関連する問題