這是一個部分文章。我希望在我做了更多的工作之後擴展它。我想把我迄今爲止所做的事情放進去,所以我不會忘記。
我意識到我需要讓我的IDE運行一個完整的JavaFx 1.2源代碼。這將使我能夠將核心代碼放入核心代碼中來確定發生了什麼。我決定在Eclipse上爲remote debugging做這個配置。我正在Netbeans中開發我的FX,但我更喜歡Eclipse,所以如果可以的話,這就是我想調試的。
爲了將這些信息導入到Eclipse中,我首先用我的代碼使用的Java源創建了一個項目。然後,我添加了外部罐子到項目。在我的Mac上,我鏈接到的Jars在/Library/Frameworks/JavaFX.framework/Versions/1.2
然後我去搜索源鏈接到這些罐子。不幸的是,它不可用。我可以在/Library/Frameworks/JavaFX.framework/Versions/1.2/src.zip中找到它的一部分。
我做了一些研究,發現剩下的唯一可用選項是安裝Java Decompilier。我使用這個,因爲它很容易安裝到Eclipse 3中。4:HTTP // colon_ java的點反編譯_dot free.fr/(< - 請原諒psudo鏈接,我很有限的,因爲我是新)
這就是現在的我。我可以導入Core FX課程,並相信我可以設置中斷點並開始真正的分析。隨着我的進展,我會更新這篇文章。
我發現了一個有用的基準測試工具:
如果使用JVM運行ARG:
-Djava.util.logging.config.file = /路徑/到/日誌/文件/ logging.properties
而且你已經把下列ARGS成由arg引用的文件:
處理器= java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level = ALL java.util中。 logging.ConsoleH andler.formatter = java.util.logging.SimpleFormatter com.sun.scenario.animation.fps.level = ALL
你會得到控制檯輸出包括每秒的幀數。對於FX 1.2而言,它並不適合我,但它似乎適用於1.2.1(2009年9月9日發佈)。我還沒有運行1.2.1的Netbeans。
嗨醪 感謝您的建議中可以看出。我讀過那篇文章,並認爲我理解它。問題是這篇文章並沒有給你任何分析方法來找出什麼特別是造成了延遲。我做了一些分析,並相信我的代碼中的大部分計算時間都花在JSGPanelRepainter.repaintAll()中。問題是,我的模型或演示文稿都沒有改變,需要完全重新繪製。這使我想知道什麼觸發了repaintAll()。我只是不知道如何追蹤。 乾杯。 – Spina 2009-09-09 20:29:10
@Spina在JFX 1.2中,重繪頻繁發生,即使不必要時也是如此。 1.3應該有更好的性能,只有在絕對必要時纔有選擇地重繪。艾米福勒在這個演講中指出(http://steveonjava.com/2009/12/18/javafx-layout-secrets/)這個問題。 – 2010-02-09 13:55:25