草庐IT

PERFORMANCE

全部标签

java - CLASSPATH 中有未使用的 JAR 文件的影响

我在这里阅读了很多关于可用于查找未使用JAR的工具的问答,例如:loosejarClasspathHelper我的问题是,在编译时或运行时类路径中有未使用的JAR是否有任何影响(例如将类加载到内存、性能等)?问题适用于作为独立程序和Web服务器(ApacheTomcat)运行,尽管我最初只考虑独立程序。注意:我正在运行JDK6u32(64位)。 最佳答案 Arethereanyimpacts(suchasloadingofclassesintomemory,performance,etc.)ofhavingunusedJARsint

Java 详细 :gc How to read the output?

我有一个Java应用程序,它存在一些性能问题,有人建议我以verbose:gc模式运行它。这已经完成,但我不知道如何解释日志记录。是否可以向我解释这一切的含义或建议我如何提高绩效?可以在以下位置找到输出日志:http://pastebin.com/uDNPEGcd提前致谢,亲切的问候,马丁 最佳答案 verbose:gc在每次gc收集后立即打印并打印有关每一代内存详细信息的详细信息。这是关于如何阅读verbosegc的博客如果您正在尝试查找内存泄漏,verbose:gc可能还不够。使用一些可视化工具,如jhat(或)visualvm

java - 用于线程安全的未绑定(bind)缓存的 ThreadLocal HashMap 与 ConcurrentHashMap

我正在创建具有以下特征的内存缓存:缓存未命中将导致计算和存储一个条目这个计算非常昂贵这个计算是幂等的无限制(条目从未删除)因为:输入的结果最多为500个条目每个存储的条目都非常小缓存的生命周期相对较短(通常不到一个小时)总的来说,内存使用不是问题将有数千次读取-在缓存的生命周期内,我预计99.9%以上的缓存命中率必须是线程安全的什么会有更好的性能,或者在什么条件下一种解决方案优于另一种解决方案?ThreadLocalHashMap:classMyCache{privatestaticclassLocalMyCache{finalMapmap=newHashMap();Vget(Kkey

java - 根据每个字符的出现次数有效地对字符串进行排序

我正在尝试根据每个字符出现的次数对字符串进行排序,最常见的在开头,最稀有的在结尾。排序后,我需要删除所有字符重复。因为示例总是更清晰,所以程序应该执行以下操作:Stringstr="aebbaaahhhhhhaabbbccdfffeegh";Stringoutput=sortByCharacterOccurrencesAndTrim(str);在这种情况下,“sortByCharacterOccurrencesAndTrim”方法应该返回:Stringoutput="habefcdg"在2个字符出现相同的情况下,它们在返回字符串中的顺序无关紧要。所以“habefcdg”也可以等于“ha

java - 为什么使用 for 循环的倒数总和比流快 400 倍?

此代码对计算double[]元素的倒数和的3种不同方法进行了基准测试。一个for循环Java8流colt数学库使用简单for循环的计算比使用流的计算快约400倍的原因是什么?(或者基准测试代码有什么需要改进的地方吗?或者使用流来更快地计算它的方法?)代码:importjava.util.Arrays;importjava.util.List;importjava.util.Map;importjava.util.concurrent.TimeUnit;importjava.util.stream.Collectors;importjava.util.stream.IntStream;i

java - 为什么这种方法成为热点?

我正在编写一个(简单!)线性代数库。在执行matrixmultiplication,一个VisualVM性能示例告诉我,在乘以大型矩阵(5kx120k)时,该算法在以下方法中花费了85%的时间(特别是“self时间”):publicdoublenext(){doubleresult;if(hasNext())result=vis[i++].next();elsethrownewIllegalStateException("Nonextvalue");returnresult;}无需赘述(抱歉,我无法分享更多代码),此方法是矩阵“迭代器”的next()方法。(您可以将此方法所在的类想象成

java - int vs long 的迭代速度

我有以下两个程序:longstartTime=System.currentTimeMillis();for(inti=0;i和longstartTime=System.currentTimeMillis();for(longi=0;i注意:唯一的区别是循环变量的类型(int和long)。当我运行它时,无论N的值如何,第一个程序始终在0到16毫秒之间打印。第二个需要更长的时间。对于N==Integer.MAX_VALUE,它在我的机器上运行大约1800毫秒。运行时间似乎在N中或多或少呈线性。这是为什么呢?我想JIT编译器将int循环优化到死。并且有充分的理由,因为显然它什么都不做。但为什

java - 如何为 iBatis select 语句设置 fetchSize

我在Java中使用iBatis作为ORM框架。我有一个选择语句SELECT*FROMSOME_TABLE我正在使用queryForList方法:Listlist=getSqlMapClientTemplate().queryForList("getList");但是它检索大量数据并且此查询的性能非常慢。我对这个问题的假设是iBatis具有默认的获取大小(例如,在JDBS中是10),所以这就是它这么慢的原因。所以我想设置更大的获取大小(例如1000)。我该怎么做?还是我看错了方向?注意:我需要所有数据,所以在queryForList方法中设置最大结果对我来说不是合适的解决方案。Listq

java - jMeter线程序列

我有一个包含以下http请求采样器的JMeter测试计划。登录调用一些需要登录用户的功能退出当我使用5个并行线程执行测试计划时,我发现在为某些线程调用采样器1之前调用了采样器2,这导致响应断言失败。有什么方法可以指定要执行的采样器序列吗? 最佳答案 这应该确保它们按顺序执行:那么让我们从线程组开始吧。线程数(用户)为5。所以假设您已经为您的登录采样器制定了逻辑。只需添加额外的采样器即可。因此,右键单击该示例Add>PostProcessors>BSFPostProcessor,在此后处理器大脚本空间内写入${__setPropert

java - 性能:BufferedOutputStream 与 FileWriter

我一直使用FileWriter用Java将文本写入文件。显然你也可以使用BufferedOutputStream以及。在仔细阅读了这两个javadoc之后,我似乎无法分辨哪个更快/更有效。所以我问:这两种文件I/O方法之间是否存在性能差异(即使很小)?如果是这样,它们是什么,为什么?如果不是,为什么它们实际上是相同的?是否存在其中一种优于另一种的情况?提前致谢! 最佳答案 如果您真的想比较FileWriter和BufferedOutputStream来编写文本文件,后者应该更快,因为I/O操作更少。在FileWriter的情况下,每