2017-08-20 7 views
0

と呼ばれ、そしてトップに実行され、私は私がいつ、なぜ、それが呼ばれる知るのに苦労していると私はこれを改善するために行うことができるものがあるかどうruntime.duffcopyが私のアプリをプロファイリングすると、多く

Showing top 10 nodes out of 31 (cum >= 0.12s) 
     flat flat% sum%  cum cum% 
    13.93s 63.00% 63.00%  13.93s 63.00% runtime.duffcopy 

を見ます?あなたは、これらの呼び出しが行われた場所から機能を見る必要がありますか、または私が考えるべき一般的な経験則がありますか?

私はこれを改善することができますが、その非常に大きな機能は、(trueまたはfalseを返す)多くの条件をテストするので、その良いアイデアを実装するかわからないことを読んだことがあります。

ありがとうございました

+0

**多くの**詳細を提供する必要があります。あなたの質問は答えられません。 duffcopyを呼び出す関数を見て、値のコピーを取り除くことは、より多くの情報なしで可能な最良のアドバイスです。 – Volker

答えて

0

私はちょうどそれを解決したと思っています。私は、アセンブリ出力を見ていたと私は比較的大きなオブジェクト

for _, v := range c.Items 

項目でいたので、私は

for index := 0; index < len(c.Items); index++ 

でループ上に置き換えるなどのオブジェクトの直接アクセスを使用したことを見ましたc.Items [index]。上に戻る:

350ms 4.85% 60.47%  350ms 4.85% runtime.duffcopy 

実行時間は12秒から4秒に短縮されました。かなり素敵です:)

関連する問題