2017-03-29 14 views
0

私はGoで単純なエコープログラムのベンチマーク関数を記述しようとしています(「Goプログラミング言語」の本の演習1.3)。ここでは、コードは次のとおりです。Goベンチマーク実行時に奇妙な出力が発生しました

PASS 
BenchmarkEcho1-4 -test.bench=Echo1 
-test.bench=Echo1 
-test.bench=Echo1 
-test.bench=Echo1 
[...] 
-test.bench=Echo1 
-test.bench=Echo1 
-test.bench=Echo1 
-test.bench=Echo1 
1000000   1358 ns/op 
ok  gopl.io/ch1/exercise1.3/echo 1.377s 

あり、最初と最後の行の間-test.bench=Echo1の多く:私はgo test -bench=.を実行すると

package echo 

import "testing" 

func BenchmarkEcho1(b *testing.B) { 
    for i := 0; i < b.N; i++ { 
     Echo1() 
    } 
} 

出力はこれです。なぜこうなった?これらの行を省略するにはどうすればよいですか?

答えて

1

b.Nは本当に大きな値を持っているので、Echo1は何度も何度も実行されます。 唯一の説明は、あなたが見ているテキストをEcho1が印刷していることです。

var s string 
for i := 1; i < len(os.Args); i++ { 
    s += os.Args[i] 
} 
fmt.Println(s) 
+0

ああ、私の神:

あなたECHO1()関数は、おそらく次のようなものが含まれています。私は今、とても愚かな気がする。何らかの理由で私はベンチマーク関数が "echo"の出力を生成しないと考えました。どうもありがとうございました! –

関連する問題