草庐IT

Performance

全部标签

java - 哪些 JVM 优化导致了这些性能结果?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在JavaREST服务性能测试中,我得到了一个意想不到的模式:在每次调用中始终创建和返回相同值对象的方法比仅返回存储在类或对象字段中的值对象的另一个版本运行得更快。代码:@POST@Path("inline")publicResponseinline(Strings){returnResponse.status(Status.CREATED).build();}privatestaticfinal

java - 尽管超时时间较低,但稳定数量的 HBase 请求几乎正好需要 5000 毫秒才能完成(成功)。不知道为什么

我的客户端正在使用org.apache.hbase:hbase-client:2.1.0"并且服务器正在运行1.2.0-cdh5.11.1(1.2.0-cdh5.11.0在另一个测试集群中)。我的客户端非常简单,它在启动时实例化了一个Connection类(这个类-正如Apache推荐的那样-跨线程共享,因为它很重并且线程安全)。然后对于每个请求,它创建一个Table类并执行.exists(newGet(rowKey))操作。像这样:Connectionconn=ConnectionFactory.createConnection(hbaseConfig);和finalTabletab

Java 枚举 - 枚举上的 Switch 语句与访问者模式 - 性能优势?

我已经搜索了好几天来找到这个基于性能的问题的答案。到目前为止,在浏览Internet之后,我了解到有几种方法可以在Java中使用枚举,详细记录在here中。.好吧,作为初学者肯定会喜欢在switch-case语句中使用枚举,这样可以使代码更加清晰和更好地理解。但另一方面,我们也有一个Visitor模式风格的枚举实现,这确保了类型安全和可扩展性,已讨论here.话虽如此,回到这个问题背后的最初想法,到目前为止,我了解到如果使用枚举正确设计了一个switch-case结构,这确保了case值不稀疏,并且Enum声明是在与switch-case语句相同的编译单元中,java编译器通过实现诸如

java - 数组数组与多维数组的性能比较

当我在大学里使用C++时,有人告诉我尽可能使用多维数组(这里称为MDA),因为它分配在一个大块中,因此表现出更好的内存局部性。另一方面,数组的数组(AoA)分配在多个较小的block中,可能散布在物理内存中的所有位置,只要发现空缺即可。所以我想第一个问题是:这是一个神话,还是值得遵循的建议?假设是后者,那么下一个问题就是使用像Java这样没有真正MDA的语言来做什么。当然,用1DA模拟MDA并不难。本质上,对于具有MDA的语言来说语法糖可以实现为对没有MDA的语言的库支持。这样做值得吗?对于像Java这样的语言来说,这是不是一个太低级的优化问题?我们是否应该放弃数组并使用List甚至原

java - 为什么java中Collections的fill(),copy(),reverse(),shuffle()是这样实现的

根据javadoc...Collections.fill()写成如下:publicstaticvoidfill(Listlist,Tobj){intsize=list.size();if(sizeitr=list.listIterator();for(inti=0;i很容易理解为什么他们不使用listIteratorif(size截至RandomAccess的条件。但是size有什么用呢?在上面?我的意思是,与使用iterator相比,是否有显着的性能优势?对于size>=FILL_THRESHOLD而不是size?我也看到了Collections.copy()的相同方法:public

java - Java 堆的大 NewSize 使进程长时间无响应

我有java应用程序,它可以使用特定的内存来完成一些工作。我注意到,当我开始应用程序时,将近80%的堆设置用于年轻一代,我的应用程序运行速度比默认1:2设置快得多。特别是,我启动jvm时:java-XX:NewSize=10G-XX:+UseParallelOldGC-server-Xmx12G-Xms12G服务器至少有14Gb的可用物理内存,因此我认为对于Java堆和“其他”空间来说应该足够了。现在事情是这样的:25.289:[GC[PSYoungGen:7872317K->1058813K(9175040K)]7872533K->1059029K(11272192K),0.1876

java - 使用标志或 if 子句效率更高吗?

在Java循环中,使用boolean标志而不是if语句是否更有效?看看这两段代码。使用标志:publicbooleanisSomethingForAnyone(){booleanflag=false;for(Itemitem:listOfItems){flag=flag||item.isSomething();}returnflag;}使用if语句:publicbooleanisSomethingForAnyone(){for(Itemitem:listOfItems){if(item.isSomething())returntrue;}returnfalse;}如果isSomethi

java - Grails 与 REST 的 Spring 性能

我使用纯Groovy/Grails创建了一些REST端点。目前大多数操作都是类似CRUD的。我开始将Grails应用程序的性能与我使用JMeter制作的CRUD场景的等效Java/Spring应用程序进行比较。所以现在我将我在Grails中实现的场景的一个子集移植到一个基本的SpringMVC应用程序。我对看到其他人在网络上发布的性能比较非常感兴趣。任何人都可以向我推荐一些吗?欢迎提供有关我将要进行的测试和分析的任何其他信息。谢谢!关于答案的更新:@Lari下面的回答引用了一个测试非常全面的网站,比较Grails2.X对比Spring4.X(请参阅README.md),以及许多其他框架

java - VisualVM:理想的堆内存使用图

我正在使用VisualVM监控我的Java应用程序(用JDK1.7编写)。下图显示了此应用程序运行期间的堆内存使用情况。查看此图,您会发现其中有很多尖峰。这些尖峰表明应用程序创建了对象。一旦应用程序处理完它们,它就会使用gc(在这种情况下隐式调用)销毁它们。此外,这是应用程序仍在运行时内存分析器的屏幕截图对我来说,图形的上下性质表明java对象的有效使用。这个推断对吗?堆使用图的理想性质是什么?是否有任何其他方法可以改善我的应用程序的堆内存使用情况? 最佳答案 Tometheupanddownnatureofthegraphindi

java - 为高分配率调整 JVM

我正在尝试调整我的应用程序,主要是为了减少响应时间的“扩展”。平均值很好,但范围太宽。Dynatrace显示响应时间越长,暂停时间越长。这指向GC。我尝试根据在线阅读更改一些JVMGC值,但收效甚微。根据GC日志,我计算出分配速率约为324MB/s,而提升速率仅为0.85MB/s。在我看来,这似乎具有很高的分配率,所以我尝试增加年轻一代的大小。第一个屏幕截图使用默认的Java8设置,1024MBXmx。第二张截图是设置NewRatio=1。任何有关下一步尝试的建议都将不胜感激。我已经尝试过的事情:更改为G1GC,设置NewRatio=1,设置NewRatio=1并将Xmx增加到2048