3

これは概念的な質問です。一連のアルゴリズムの実行中に JVM から OS に渡された命令をキャプチャする方法を見つけた人がいるかどうか疑問に思っています。

問題は、アプリケーションのパフォーマンスを考えると、プロセス数、CPU 数、CPU 速度、使用可能なメモリなどの変数が多すぎるということです。私が探しているのは、それらすべてを抽象化する方法です。依存関係がなくなるため、基本的にすべてが JVM によって渡される命令の数に要約され、他の変数に応じて、これらの命令はより速く実行されたり遅く実行されたりする可能性があります。

そのようなコードにフックしてネイティブである可能性があり、それらの情報を取得する方法はありますか?

私はそれが本当に抽象的なことを知っていますが、それをより単純な形にできるかどうかはわかりません.

ありがとう

4

1 に答える 1

1

あなたは本当にそれを行うことはできません.

昔々、クロック サイクルを数えて、特定の (小さな) コード片の速度を計算することができました (私が使用したリファレンスで利用可能な特定の x86 アセンブラー コマンドのミリ秒の継続時間をはっきりと覚えています。それは Intel に対してのみ有効でした。ただし、8086 CPU)。

しかし、最新のハードウェアは非常に多くの種類の最適化 (ソフトウェアの最適化は言うまでもありません) を行っているため、それらを「抽象化」する簡単な方法はありません。関係さえ異なる場合があります (計算は、アーキテクチャ #1 ではメモリ アクセスよりも 10 倍高速であり、アーキテクチャ #2 では 20 倍高速である可能性があります)。異なる CPU キャッシュ レベルのサイズだけでも、コードの実際の速度に大きな影響を与える可能性があります。

しかし、方法を見つけた場合は、必ず特許を取得して隠してください。これで大儲けできるはずです。

于 2012-06-06T08:39:10.190 に答える