0

問題は次のとおりです。類似または同等のスコープを持つ多数のプログラミング ライブラリ (XML パーサー、正規表現、マークアップなど) があるとします。ライブラリが異なるプログラミング言語 (java、C#、ruby、python、perl など) で記述されている場合でも、これらのライブラリでパフォーマンス テストを実行して比較 (およびレポートを生成) できるツールはありますか? ?

これらのopensourcetesting.org/performance.phpを見ましたが、上記の (ややぼやけた) 要件に適合するものはありませんでした。

クロス言語クロスプラットフォーム パフォーマンス テスト用のツールキットやフレームワークはありますか?

ありがとう。

4

2 に答える 2

1

可能であれば、あるモジュールをプラグアウトして別のモジュールに切り替えることができるように、何らかの形の依存性注入を使用するのが最善です。その前に、そのようなライブラリ用の一意のインターフェイスを作成する必要があります(つまり、ラッパー)。これにより、作業は難しくなりますが、全体的な設計は向上します。良い面としては、以前のインターフェースをベンチマークしたい場合は、完全である必要はありませんが、パフォーマンスの際に最も有益だと思うものを公開するだけです。問題です。

能力は使用する言語に大きく依存します。

人工的なテストは好きではありません。それらはほとんどの場合不正確なIMOであり、人々は1つのライブラリ関数が他のライブラリ関数よりも多かれ少なかれ機能することを見逃しがちですが、どちらも同じように見えます。そのような特性を持たないベンチマークに遭遇することはめったにありません。

反対に、完全に優れたライブラリのようなものはめったにありません。多くのライブラリは、他の同様のライブラリが機能しない可能性があるいくつかのシナリオで良好なパフォーマンスを示し、その逆も同様です。

したがって、パフォーマンスがアプリにとって最も重要なことである場合、IMOを実行するための最良の方法は、インポートする操作のインターフェイスを作成してから、いくつかのライブラリをプラグイン/アウトして、実際のベンチマークの違いを確認することです。動作中のアプリ、いくつかの人工的な数学の巨大なジャンボではありません...

于 2009-04-25T17:51:32.023 に答える
1

複数の言語に単一のツールキットを使用しようとはしません。これでは、各アプリで最高の (または平均的な) パフォーマンスが得られる可能性は低いです。

代わりに、何をテストするかを定義し、共通のデータ セットを持つフレームワークの設計を考え出そうとします。次に、各言語/ライブラリは、そのライブラリに適した操作をテストする独自のフレームワーク実装を提供できます。そうすれば、まったく同じ構文/呼び出しを使用しなくても、操作を「論理的に同等」にすることができます。最小公分母ではなく、そのライブラリ/言語の慣用的なコードをテストすることになります。

これは、Protocol Buffers のベンチマークのために私が取ったアプローチです。これまでのところ、私の非常に基本的なフレームワークは C# と Java で実装されており、現在は「ベンチマーク スクリプト」全体を実行できる、より充実したフレームワークを作成しています。理想的な目標の 1 つは、同じプラットフォーム内のさまざまな実装 (たとえば、プロトコル バッファーのさまざまな .NET 実装) が、ほとんど手間をかけずに同じコア ベンチマーク コードにフックできるようにすることです。

私の考えでは、重要なことは、共通の操作セット (すべてのライブラリですべてが実装されていなくても)と共通のデータ セットを持つことです。それが、ベンチマークが意味を持つ唯一の方法です。

于 2009-04-25T17:41:56.927 に答える