私は現在、データベースに関連するいくつかのプロセスを測定する目的で 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 は実際には何も最適化しません。しかし、それでも、私はいくつかの実験的なアドバイスを求めることを好みます:)
ご協力ありがとうございました !
注:ベンチマークについてよく読んでいます:
- http://www.ibm.com/developerworks/library/j-jtp12214/
- http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html
- http://www.ibm.com/developerworks/java/library/j-benchmark2/
これが、ウォームアップが 1 回だけ必要であると私が言う理由です。:)