Tag: 性能

在hibernate统计中有什么是load和fetch之间的区别

我主要看的是EntityStatics( http://www.hibernate.org/hib_docs/v3/api/org/hibernate/stat/EntityStatistics.html )。 我可以看到很多提取,加载和更新,我无法找到任何说明它们之间有什么区别的地方。

两个或更多(哈希)映射的联合

我有两个包含相同类型对象的地图: Map a = new HashMap(); Map b = new HashMap(); public class TaskJSO { String id; } 地图键是“id”属性。 a.put(taskJSO.getId(), taskJSO); 我想获得一个列表:“Map b”中的所有值+“Map a”中不在“Map b”中的所有值。 执行此操作的最快方法是什么? 谢谢 编辑:比较由id完成。 因此,如果两个TaskJSO具有相同的id(等于方法被覆盖),则认为它们是相等的。 我的目的是从性能的角度来了解哪种方法最快。 例如,如果我在地图中执行“比较”(如彼得所建议的),是否有任何区别: Map ab = new HashMap(a); ab.putAll(b); ab.values() 或者如果我使用一套(如Nishant所建议的): Set s = new Hashset(); s.addAll(a.values()); s.addAll(b.values());

如何在Java中找到CPU密集型类?

我有一个使用multithreading的Java大程序。 在某些情况下,程序开始使用我的八核系统的三个核心中的100%。 在正常使用中,程序使用1-2%的所有核心。 如何找到超载核心的类?

AtomicInteger何时优先于同步?

由于AtomicInteger至少比synchronized保护的int慢一个数量级,为什么我要使用AtomicInteger? 例如,如果我想要的是以线程安全的方式增加int值,为什么不总是使用: synchronized(threadsafeint) { threadsafeint++; } 而不是使用慢得多的AtomicInteger.incrementAndGet() ?

Java在for循环中使用getter还是创建局部变量?

我有一个运行4096次的for循环,它应该尽可能快。 性能在这里非常重要。 目前我在循环中使用getter方法,它只返回在循环进行时不会改变的字段中的值或对象。 例: for (;;) { doSomething(example.getValue()); } 使用getter是否有任何开销? 使用以下方式更快吗? 例: Object object = example.getValue(); for (;;) { doSomething(object); } 如果是,那么访问example.value等公共字段是否也是如此? 编辑:我不在循环中使用System.out.println() 。 编辑:某些字段不是final字段。 没有字段是volatile ,也没有synchronized方法(getter)。

如何配置GC不能阻止世界?

假设我有一个JVM 1.7,它可以正常运行,最大1G。 堆大小。 并且只使用~0.5G的堆。 在某些时刻,堆使用量在几分钟内急剧增加(我怀疑负载增加而不是内存泄漏)并且GC( PS MarkSweep )启动。 GC运行约30分钟。 并且服务器没有响应所有时间。 堆统计显示,当时Old Gen堆使用量增加, Eden减少, max Survivor增加。 JVM使用默认选项-XX:+UseParallelGC 我将尝试增加堆,限制输入数据大小等。但我想知道如何调整GC以使 “停止世界”半小时。 我不介意服务器是否运行速度慢但我不想让它停止响应。 如何配置GC不能阻止世界 ?

Hibernate QueryTranslatorImpl HQL AST解析性能

我正面临使用@NamedEntityGraph执行标准spring-data-jpa findAll查询的性能问题 当我检查日志时,我看到以下语句: 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exec-1] CriteriaQueryImpl: Rendered criteria query -> select generatedAlias0 from Patient as generatedAlias0 order by generatedAlias0.id asc 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exec-1] CriteriaQueryImpl: Rendered criteria query -> select count(generatedAlias0) from Patient as generatedAlias0 2016-10-26 09:46:25,681 DEBUG [http-nio-8080-exec-1] SQL: select count(patient0_.id) as col_0_0_ from patient patient0_ 2016-10-26 09:46:25,682 DEBUG [http-nio-8080-exec-1] Loader: Result […]

如何提高客户端 – 服务器架构应用程序的性能?

我们有一个基于客户端 – 服务器架构的产品。 有关使用的技术堆栈的一些细节。 客户端 – Java Swing 服务器 – RMI Java数据库 – Oracle 客户端位于世界的不同地方,但java服务器和oracle数据库位于瑞典的同一台机器上。 因此,存在大量网络延迟。 位于偏远地区的客户表现糟糕。 该应用程序用于处理大小超过50MB的文件。 每项操作一般需要超过1000次网络呼叫。 根据您的经验,您如何解决这个问题并提高性能? 编辑:回答几个问题 文件包含需要处理和更新到数据库的实际业务数据,不能部分发送。 某些网络调用可能是批处理的,但需要对代码进行重大重构。 这是一个非常古老的应用程序,写于2001年。应用程序的设计是这样的,服务器保存所有服务,它们可以在代码中重用,业务逻辑在客户端编写。 因此,这种业务逻辑多次调用服务器,因而是天文数字。 -Snehal

java如何在循环下载期间计算Mbit / s

我有这个while loop下载文件 while ((val = bis.read(buffer, 0, 1024)) > 0) { out.write(buffer, 0, val); fileSize -= val; if (fileSize < 1024) { val = (int) fileSize; } 试图找出如何像许多速度站点一样显示Mbit / s。(链接) http://www.speedtest.net/ 。 希望mesurment留在while循环中,但我有 看过使用on-minute-threads射击但我不知道的例子.. 我不知道数据量,或者数据总是1024。 这就是我认为的问题 有任何帮助吗?

按频率或计算时间的条件语句顺序?

假设我在IF-ELSE语句中有100个不同的条件。 if((boolean = methodA)){ … } else((boolean = methodZ)){ … } 从逻辑上讲,我认为最不可能的条件应该是最后一个条件(带有methodZ的条件),最常见的条件应该是第一个条件(methodA)。 然后我想“如果方法A花了很多时间计算怎么办?”。 即使最不频繁,方法Z也需要花费更多的时间。 我应该按计算时间订购条件吗? 或者只按频率订购? 什么是解决这种困境的好方法?