4

私は現在、データベースに関連するいくつかのプロセスを測定する目的で Java アプリケーション (ベンチマーク) に取り組んでいます。

私のアプリケーションは次のように実行されるはずです:

複数回実行したいいくつかのユースケース (データベースへの単純な挿入、単純な更新など) があります。実行間の唯一の違いは、同時に実行されるスレッドの数です。

テストに同時実行性を含めるために、1、2、4、8、16 などのスレッドを使用してこれらのユースケースをベンチングする必要があります (ExecutorService を使用)。

私の質問 :

アプリは各実行前にウォームアップを実行する必要がありますか? または 1 つだけで十分です。つまり、私のアプリは次のことを行う必要がありますか?

--warmup
--process(1) (1 thread)
--warmup
--process(2) (2 threads)
etc.

また

--warmup
--process(1)
--process(2)
etc.

基本的に「process()」メソッドは、スレッド数に関係なくまったく同じです。コードが変更されないため、JVM は実際には何も最適化しません。しかし、それでも、私はいくつかの実験的なアドバイスを求めることを好みます:)

ご協力ありがとうございました !

注:ベンチマークについてよく読んでいます:

これが、ウォームアップが 1 回だけ必要であると私が言う理由です。:)

4

1 に答える 1

2

1回のウォームアップが必要です。これらの記事をカバーし、適切なウォームアップ (十分な反復、ウォームアップ コードが削除されないようにするなど) を実行した場合、ウォームアップは十分であり、各テストの前に実行することによる追加の利点は得られません。

于 2013-02-12T08:52:40.847 に答える