0

Java でカスタム インターフェイス画面を作成しています。このインターフェイス画面の一部は、指定された画像を受け取り、それを指定された数のセクションにランダムに切り刻み、わずかな動きで画面に描画します。この上に、下で起こっていることのほとんどを消し去るオーバーレイが描かれています。これは明らかに非常に非効率的でした。なぜなら、描画されているものの多くが見えず、(私が思っていた)最初の起動時にインターフェイス画面が一時的に停止していたからです。起動時の速度低下の問題を修正することを期待して、オーバーレイを通して見えるセクションのみが描画されるようにコードを修正しましたが、修正されていません。

描画ループのタイミングを出力すると、最初の 3 回は高く、約 500ms、次に 300ms、次に 20ms で、残りは安定した 16ms (または 60 fps) です。

開始時にこの速度低下を引き起こしている可能性のあるものは他にありますか? Javaが最初の1000ミリ秒程度で描画を最適化し、残りの時間は16ミリ秒で実行できるようにすることは可能ですか? (描画されているものの一部が表示されないことに気づき、最適化して、更新ごとに実際に描画されないようにするなど)-何が原因である可能性があるかについて、私はちょっとアイデアがありません。

更新が開始されると、オブジェクト/スレッド/アセットがロードされていないことを確認するために徹底的にチェックしましたが、これが私が考えることができる唯一のことです.

どんな助けでも大歓迎です。

4

1 に答える 1

0

Java の多くのループは、このように動作します。これは、JVM がコードを 2 つの形式 (低速のバイトコードまたは高速のネイティブ コード) で格納および実行できるためです。ネイティブ コードの作成にはコストがかかるため、バイトコードがデフォルトです。プログラムが実行されると、JVM はネイティブ コードに変換する価値があるプログラムの部分に関する情報を収集します。これは、コードのジャスト イン タイムコンパイルと呼ばれます。したがって、プログラムが実行されると、より高速になります。

于 2013-06-15T17:12:20.000 に答える