更快我在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