私はカスタムJavaランダムフォレストの実装をCythonを利用するSciKit実装と比較しています。アルゴリズムは非常に似ており、私は同じデータセットでそれらをテストしました。 Javaの実装には、Pythonよりもはるかに多くのメモリが必要です。私はこれがいくつかの原因によって引き起こされる可能性があることを知っていますが、そのうちのどれがJavaのスペース効率に対してどれくらいの割合を占めているかを把握したいと思っていました。両方のアルゴリズムが最適に書かれていると仮定するか、少なくともほとんど最適であると仮定すると、メモリ使用量にどの程度の違いがあると思いますか?Java対Cythonメモリ効率
答えて
LinuxまたはMacの場合は、「time」コマンドを使用してテストできます。これにより、各プログラム(Java、Python、C)が実行されるのにどれくらい時間がかかります。メモリ効率をテストする場合は、デバッガ(Cのgdbなど)を使用して、コードをステップ実行して、「ボンネットの下で」何が起こっているのかを正確に確認することができます。私はそれが本当にそれになると思う、いくつかのベンチマークテストを実行する必要があります。
私が見つけたことは、いくつかの状況ではJavaがCより高速で実行されることがありますが、時にはCがより良いメモリ使用と最適化を持つことがあります。私はこれが役立つことを願っています
私は、リンゴからJavaへの実装が、Pythonバージョンに匹敵することを期待しています。あなたが言うように、ここには多くの要因がありますが、メモリ使用量に大きな違いが見られる場合は、Java実装の記述方法に何かがある可能性が最も高いです。
私の経験では、Javaプログラムは、それが必要以上に多くのメモリを使用する場合、通常、その理由は、アプリケーションのようなものやっているということであるということである。
- は、一度に入力レコード1を取り、コレクションにそれを置きます
- つまり
一度にコレクション1からプロセスの各レコードは、それが不必要にヒープ内の大量のデータを保存するということで、それはアプリケーションのデザインについてですが、Javaの程度の基本的な何もありません。
メモリが500%増えると、これはJava固有の可能性はほとんどありません。これは、アルゴリズムで使用されるすべてのバイトに対してJavaが5バイトのオーバーヘッドを持つことを意味します。それが現実であれば、Javaは非常に高価になります。 GoogleやAWS上で動作するクラウドソフトウェアの多くを実行することは実際には実行可能ではなく、Androidには意味をなさないだろう。ソースがなければ、なぜ誰があなたにこれを見ているのかを伝えることはそれほど多くありません。
私が考えることができるのは、Cythonが各単語に8バイトを置いているときに64ビットを使って1バイトを保持するようなものだけです。これが当てはまる場合は、Javaバージョンで修正できるものです。
CythonではなくPythonを明確にするために。つまり、CコードとJavaコードの効率を比較しています。 – user123959
@ user123959 cython.orgのメインページによると、 "Cython言語はPython言語のスーパーセットです。"多くの言語はC言語にコンパイルされており、Javaもそうです。生成されるCの「効率」は、コンパイラによって異なります。 CとJavaを単に比較しているわけではありません。 CythonにJavaよりも少ないメモリを使うことを可能にするいくつかのトリックがあるかもしれないが、私はそれがJavaコードが書かれている方法である可能性が高いと思う。 – JimmyJames
- 1. Cython:配列のメモリ効率的な埋め込み
- 2. Java効率 - ポイント対座標
- 3. React.cloneElementメモリ効率
- 4. AESのメモリ効率
- 5. EC2 CPU使用率対メモリ
- 6. サブフォルダのEnumerateFilesメモリ効率
- 7. SignalRのCPUとメモリ効率
- 8. Androidペイントオブジェクトのメモリ効率
- 9. メモリ効率的なホットエンコードパンダ
- 10. メモリ効率の良いパワーセットアルゴリズム
- 11. cython共有メモリ - ブロック
- 12. Java RandomAccessFileのメモリ使用率
- 13. Javaループ効率
- 14. Javaのメモリを効率的に実装する
- 15. Java、メモリ不足、非効率的な機能
- 16. FORTRANメモリ使用率 - 静的対動的
- 17. 削除対象効率
- 18. 計算効率:スパース対フル
- 19. unfoldr対zipの効率
- 20. Javaメソッドの効率
- 21. 私のcythonコードをより効率的にする
- 22. Mysqlのメモリ効率と型宣言
- 23. postgres windows効率的なメモリ使用
- 24. メモリ効率のよいスパースSVD/PCA(ジュリア)?
- 25. メモリ効率のキーと値のストアは
- 26. `DataFrame`ローのメモリ効率的なフィルタリング
- 27. gettextの効率:メモリ内変換
- 28. は、効率的なメモリ使用量
- 29. PHPExcelクローンワークシート - 効率的なメモリの使用
- 30. Java:効率的なArrayListフィルタリング?
「require」と言ったときに、Python実装が使用しているものの周りに最大ヒープサイズを設定すると、メモリエラーが発生することになりますか? – JimmyJames
はい、そうです。 – user123959
メモリ使用量の違いを数値化できれば助かります。例えばそれは100%多くですか? – JimmyJames