特定のデータ処理アルゴリズムを Java から C++ に移植中です。コードを書き直す理由は移植性であり、Java が使用できない環境で実行する必要があります。ただし、副次的な利点として、パフォーマンスの向上が期待されていました。
基本的に、このアルゴリズムは、相互へのポインターを持つオブジェクトで構成されるグラフからデータを読み取り、結果を計算します。計算中に多数のオブジェクトの割り当てが行われるため、おそらくこれが速度低下の原因です。問題は、C++ コードは現在、古い Java コードよりも約 10 倍速く実行されるということです。これは本当に予想外でした。おそらく50〜60%の改善が見られると思いました.
残念ながら、分析のためにここにコードを投稿する自由はありません。数千行なので、とにかく便利かどうかはわかりません。
問題は、アルゴリズムがほぼ同じであるということです。私が考えることができる唯一の大きな違いは、Javaには単一のスーパークラスの多くのドータークラスがあり、計算中に if(object.getClass() == daughterx.class) が何度も呼び出されるのに対し、C++コードでは一般的なものは1つだけですclass が使用され (ドータークラス間のコードの違いはほとんどないため)、単純な整数比較が使用されます。if(オブジェクト->タイプ== 15)
Java の Object.getClass() メソッドのコストはどれくらいですか? このメソッドが呼び出されると、低レベルで正確に何が起こっているのでしょうか?