シングルスレッドのローカルな複雑なアルゴリズムであるJavaコードのパフォーマンス測定(主にランタイム)を行いたい。(したがって、JVM実装を測定するマクロベンチマークは必要ありません。)
ツールで、私はしたいです
このために、私はツールまたはフレームワークを使用したいと思います
どのようなツール/フレームワークがこれらの要件を満たしていますか?どれが複雑さと傾向分析に適しているでしょうか、そしてなぜですか?
以下は、私が見つけたすべてのツールのアルファベット順のリストです。言及されている側面は次のとおりです。
パラメータ化可能; Perlライブラリ; JVMマイクロベンチマークなし。プロット; 持続; トレンド分析!?; 優れた統計(結果が安定するまで特定のテストを実行し、外れ値をハイライトします)。
パラメータ化できません。Javaライブラリ; JVMマイクロベンチマーク。プロットなし; 持続性はありません。傾向分析なし。統計学。
統計は非常にうまく機能します。平均、最大、最小、標準偏差に加えて、95%信頼区間(ブートストラップによる)とシリアル相関(たとえば、プログラムが非決定的に動作する場合に発生する可能性がある発振実行時間について警告するため)も計算します。 HashSetsを使用するためです)。正確な測定値を取得するためにプログラムを反復する必要がある頻度を決定し、レポートと警告(たとえば、外れ値とシリアル相関について)のためにこれらを解釈します。
また、マイクロベンチマークは非常にうまく機能します(詳細については、Javaを使用した迅速で信頼性の高いベンチマークの作成を参照してください)。
残念ながら、フレームワークは、他の多くのヘルパークラスと一緒にバンドルされたutilパッケージに含まれています。ベンチマーククラスはJSci(JavaのサイエンスAPI)とMersenne Twister(http://www.cs.gmu.edu/~sean/research/)に依存しています。著者のBrent Boyerが時間を見つけた場合、ライブラリを要約し、より単純なグラファーを追加して、ユーザーが視覚的に測定値を相関関係や外れ値などを調べられるようにします。
パラメータ化可能; Javaライブラリ; JVMマイクロベンチマーク。プロット; 持続; 傾向分析なし。統計学。
Androidアプリ向けに調整された比較的新しいプロジェクト。若く見えますが有望です。Google Guavaに依存:(
パラメータ化できません!?; Javaライブラリ; JVMマイクロベンチマークなし!?; プロット; サーブレットによる永続性。傾向分析なし!?; 統計なし!?
AOPインスツルメンテーションをサポートします。
パラメータ化できません。Javaライブラリ; JVMマイクロベンチマークなし。追加のツール(JarepまたはJMX)によるプロット、持続性、トレンド分析。統計学。
log4jと絡み合った適切な監視により、プログラムでデータにアクセスしたりクエリしたりすることもでき、プログラムは結果に対してアクションを実行できます。
パラメータ化できません!?; Javaライブラリ; JVMマイクロベンチマークなし。Jarepでのみプロットします。JMXのみでの永続性。傾向分析なし。統計なし!?
Jamonのライバルは、モニターの階層をサポートします。
パラメータ化できません。Javaライブラリ; JVMマイクロベンチマーク。プロット; 持続; 傾向分析なし。統計なし。
素敵な軽量の監視ツール、依存関係なし:)十分な統計(標準偏差なし)を提供せず、それに応じてプラグインを拡張することは非常に困難に見えます(アグリゲーターとアグリゲートには、最小、最大、平均の固定ゲッターしかありません)。
パラメータ化可能!?; Javaライブラリ; JVMマイクロベンチマークなし!?; プロット; 持続; トレンド分析!?; 統計学!?。
Webアプリケーションの負荷テストに合わせて調整された優れた監視ライブラリ。
パラメータ化可能(Java APIを介したカスタム呼び出し元); Javaライブラリ; JVMマイクロベンチマーク; プロットなし。持続性はありません。傾向分析なし。統計学。
OracleのHotSpotエキスパートによって構築されたベンチマークハーネスは、OpenJDKパフォーマンス作業で使用されるHotSpotでのマイクロベンチマークに非常に適しています。信頼できるベンチマーク環境を提供するために、極端な対策が講じられています。人間が読める出力に加えて、jmhは、結果を処理するためのJava APIを提供します(サードパーティのプロッタや永続化プロバイダなど)。
パラメータ化可能; Javaライブラリ; JVMマイクロベンチマーク。プロット; 永続性(CONSOLE、XML、またはデータベースH2を使用); グラフィカルな傾向分析; 統計(最大値、最小値、平均値、標準偏差。ただし、詳細な統計情報を簡単に拡張することはできません)。
junitテストにjunit-4-ruleを追加するだけです:)
junit-Benchmarksはオープンソースであり、Apache 2ライセンスに基づいています。
更新:プロジェクトを移動しましたjmh
主に、パフォーマンス(JUnitテストデコレータを使用TimedTest
)とスケーラビリティ(JUnitテストデコレータを使用)の傾向分析を行うためのものLoadTest
です。
パラメータ化可能; Javaライブラリ; JVMマイクロベンチマークなし。プロットなし; 持続性はありません。統計なし。
パラメータ化できません。Javaライブラリ; JVMマイクロベンチマークなし。プロット; JMXによる永続性。log4jアペンダーによるトレンド分析。統計学。
ロギングフレームワーク上に構築され、AOPを使用できます。
非常に一般的な概念:モニターは事前定義された条件を監視し、条件が満たされた場合の対応方法を指定します。
主な焦点はパラメータ化可能性です:アルゴリズムがスケーリングするかどうかを確認します。つまり、アルゴリズムがO(n)、O(n log(n))、O(n²)であるかどうかを確認します...
Javaライブラリ; JVMマイクロベンチマーク。プロットなし; 持続; トレンド分析; 統計なし。
パラメータ化可能; Jythonライブラリ。JVMマイクロベンチマークなし。プロット; 持続; 傾向分析なし。良い統計はありませんが、簡単に拡張できます。
Jython、HTTPClient、JEditSyntax、ApacheXMLBeans、PicoContainerに依存します。
パラメータ化可能!?; Javaツールプラットフォーム。JVMマイクロベンチマークなし!?; プロット; 持続; グラフィカルな傾向分析; 統計なし!?
Test&Performance Tools Platformは、(Eclipseと4つのEMFモデルに基づく)汎用で拡張可能な巨大なツールプラットフォームです。したがって、強力ですが非常に複雑で、Eclipseの速度が低下する可能性があり、独自のニーズに合わせて(たとえば、統計を使用して反復回数に影響を与えるように)拡張することは非常に難しいようです。
パラメータ化可能!?; Javaライブラリ; JVMマイクロベンチマークなし。プロット; 持続; トレンド分析!?; 統計学!?。
このツールは、大規模なクラスターでの監視に合わせて調整されています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加