2017-12-07 9 views
0

これは学校プロジェクトです。私たちはアルゴリズムの入力を受け取るためのJavaFX GUIを構築しました。このアルゴリズムは、スタンドアロンモードでは45分しか実行されません。ただし、JavaFX GUIから呼び出すと、実行時間が2倍になります。これを引き起こす原因は何ですか?また、JavaFX GUIは約400 Mbのメモリを消費しますが、これは正常ですか?JavaFXがバックエンドを遅くする

何か助けていただければ幸いです。

Yulian

+2

さらに詳しい情報が参考になります。最小、完全で検証可能な例を生成できる場所はどこですか?私にとって個人的には、メインスレッドかバックグラウンドスレッドのどちらでアルゴリズムを呼び出すかを知るのに役立ちます。 https://stackoverflow.com/help/mcve – findusl

+0

アルゴリズムは、メインスレッド上でボタンクリック方式で呼び出されます。 – Yulian

+0

問題が発生するかどうかはわかりませんが、それは特別なスレッドであり、オーバーヘッドがある可能性があるためです。一般的には、メインスレッド上で計算集中型アルゴリズムを実行することはお勧めできません。 UIをフリーズします。だからあなたはバックグラウンドスレッドでそれを実行しようとするかもしれません – findusl

答えて

0

アルゴリズムとGUIの描画呼び出しは、メモリのため競合している、これはアルゴリズムとGUIの両方のための減速を作成します。

1は、彼らが彼らのJavaFXアプリケーション(パフォーマンス賢明な)を最適化する必要がある場合は、開発しながら心に留めておく必要がある非常に微細なものがあります。この

+0

アルゴリズムがメインスレッドをブロックするだけで、ギルドがフリーズすることはありませんか?したがって、計算時間を競争するギルドコールはありませんか? – findusl

-1

を修正するためにJavaランタイムのためのより多くのメモリを割り当てます。

は、 1.純粋なJavaFXコーディングを使用してアプリケーション全体を記述する必要があると多くの人が考えています。これは、小規模なテストアプリケーションでは問題ありません。しかし、実際のアプリケーションを書くときは、I/O部分、ビジネスロジック、およびすべての非UI関連コードを別々のレイヤーに分割する必要があります。

2. 使用JavaFx Api Async +コールバックメソッドイベントディスパッチスレッドの外にこれらのコードを実行するようになっています。

関連する問題