2017-05-02 1 views
1

JMHにベンチマークを書き、私たちのカスタマイズされたコレクションのパフォーマンスを測定しようとしています。メソッドの呼び出しをパフォーマンス測定から除外します

私はそれにオブジェクトを入れるパフォーマンスを意味します。私はオブジェクトを生成するために反復を繰り返していますが、ベンチマーク結果自体から世代を除外したいのです。私は@Setup注釈について知っているが、ベンチマークが開始されたときに、それが唯一の呼び出され

@Benchmark 
public void m(){ 
    Collection<Object> c = create(); 
    Object o = createObject(); 
    // I want to measure performance of the following line only 
    c.add(o); 
} 

public Collection<Object> create(){ 
    //return the instance of the collection 
} 

public Object createObject(){ 
    //return some object 
} 

:ここ

は、それは次のようになります方法です。だから私の望むものではありません。

+0

StopWatchの使用についてはどうですか? – Perimosh

+0

@Perimoshそれはどうですか? –

答えて

1

これらのオブジェクトは、セットアップメソッド内で作成できます。たとえば、あらかじめ作成された配列に格納できます。

次に、新しいオブジェクトを提供すると、配列のアクセスとインデックスの増加操作が発生します。私はあなたがそれほど努力をする方法を見つけられないと確信しています。

つまり、オブジェクト作成のベンチマークを行わない場合は、upfrontを作成し、後で使用するためにそれらを覚えておいてください。そして、もし@Setupがあなたが探しているものでないならば。あなたのクラスがロードされたときに塗りつぶされる静的配列を使用してください。

+0

'@ Setup'はここでは動作しません。私はそれぞれのメソッド呼び出しで新しいオブジェクトを作成する必要があるからです。 –

+0

私の答えに行った更新を参照してください。 – GhostCat

関連する問題