更快我在Eclipse中運行的Java SE應用程序。我引導JPA在正常的java 6 SE環境中工作。對數據庫中不同表格的每個請求不會超過100毫秒。應用程序運行在Eclipse
的問題是,當我導出運行的JAR和我說Java的罐子myapp.jar,每個請求的數據庫的花費約9秒。
我不明白爲什麼應用程序速度更快,當我從日食
更快我在Eclipse中運行的Java SE應用程序。我引導JPA在正常的java 6 SE環境中工作。對數據庫中不同表格的每個請求不會超過100毫秒。應用程序運行在Eclipse
的問題是,當我導出運行的JAR和我說Java的罐子myapp.jar,每個請求的數據庫的花費約9秒。
我不明白爲什麼應用程序速度更快,當我從日食
事實上,每次我在做對數據庫的請求,我創建的實體管理器:
Persistence.createEntityManagerFactory("mysqldb");
爲了優化實體管理器創建我使用一個單獨的實體工廠這樣的:
private static EntityManagerFactory em = Persistence
.createEntityManagerFactory("mysqldb");
public static EntityManagerFactory getEmf()
{
return em;
}
這種努力改善外食的應用程序的性能,但在當我運行它在Eclipse的性能沒有變化。
我真的不知道什麼是它的工作更好,當應用程序被從日食推出的原因,但這種方法解決我的問題的時刻。
+1排序你自己的問題和後續在這裏 - 很高興聽到你有它的地方 – davidfrancis 2012-03-28 11:35:25
運行它,我不知道如何使用Eclipse編譯器。對Eclipse使用Ant腳本是:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project Server">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required -->
<target name="create_run_jar">
<jar destfile="myapp.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="myapp.main.Main"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="dir.../Myapp/build/classes"/>
<zipfileset excludes="META-INF/*.SF" src=
..exclude all libraries
</jar>
</target>
</project>
您可以使用-verbose:對兩個版本的類,看看它加載的類的不同的版本是導致經濟放緩
當我添加-verbose:在Eclipse的配置類,我得到的類的列表。當我導出jar或運行java -jar myapp.jar -verbose:class時,什麼都不顯示。 – 2012-03-28 09:13:05
在-jar – davidfrancis 2012-03-28 11:13:15
之前加上-verbose:class對不起。我使用類加載的控制檯輸出生成了一個文件,我在控制檯中使用diff來比較文件。最大的不同在於,Eclipse中的庫是從我創建的用戶庫中加載的,而另一種情況下,這些類是從jar中包含的庫中加載的。我真的不認爲這可能是問題 – 2012-03-28 11:26:36
你是如何測量它的?你使用哪個虛擬機參數來運行這個過程? – questzen 2012-03-28 07:54:35
同一級別的日誌記錄? – Adam 2012-03-28 08:01:09
我通過記錄以毫秒爲單位的計算時間來測量它。我使用Log4j和日誌記錄級別是相同的=「調試」 – 2012-03-28 08:05:31