草庐IT

PERFORMANCE

全部标签

java - Terracotta 的性能和技巧

大约一个月前发现Terracotta后,我刚刚开始学习如何使用它。这是一项非常酷的技术。基本上我想做的是:我的根(记录系统)是一个ConcurrentHashMap。主要的Instrumented类是一个“JavaBean”,它有30个左右的字段,我希望它们存在于HashMap中。Hashmap中大约有20000个这样的JavaBean。每个bean有(至少)5个字段,每5秒更新一次。(我为此使用Terracotta的原因是因为这些JavaBeans需要可以跨JVM和节点访问。)谁有比我更丰富的TC经验?性能是关键。还有其他类似应用的例子吗? 最佳答案

java - JDBC连接池的性能比较

有没有人有比较不同ConnectionPool实现的性能特征的信息?背景:我有一个应用程序在后台线程中运行数据库更新到同一个盒子上的mysql实例。使用数据源com.mchange.v2.c3p0.ComboPooledDataSource会给我们偶尔的SocketExceptions:com.mysql.jdbc.CommunicationsException:由于底层异常导致通信链接失败:**BEGINNESTEDEXCEPTION**java.net.SocketExceptionMESSAGE:BrokenpipeSTACKTRACE:java.net.SocketExcept

java - 在 Java 中下载文件时的合理缓冲区大小

使用Java传输(无论UP/DOWN)大文件(3-4GB)时,合理的缓冲区大小是多少?bytebuf[]=newbyte[1024]或bytebuf[]=newbyte[5*1024*1024]有时,即使您使用大缓冲区并传递给read(bytearray[])方法,这也不能保证您将获得完整的5me缓冲区。在我的测试中,我观察到每次read()调用的平均大小通常为1.5kb。这在性能方面有意义吗?如果有人能指出我更详细地讨论这个问题的资源,我会很高兴。 最佳答案 听起来您正在从网络连接(TCP?)读取数据1500字节是默认以太网MTU

java - 快速乘法和减法取模素数

我需要优化一些代码,我将整数vector(32位)乘以标量模p(其中p是质数(2^32)-5),然后从另一个vector模p中减去该vector.代码如下所示:publicstaticvoidmultiplyAndSubtract(longfragmentCoefficient,long[]equationToSubtractFrom,long[]equationToSubtract){for(inti=0;i我使用longs是因为Java不支持无符号整数,但是两个vector都是modp所以你可以期望每个数字都是0有什么优化的想法吗?modp操作占用了大部分执行时间,因此优化它的一种

java - 传递接口(interface)和重新加载类之间的性能差异

有一个consensus使用接口(interface)比使用类更好。我当然同意:接受ArrayList而不是List的库方法将是一个废话。还有一个共识是性能始终相同。这是我的benchmark不同意。接口(interface)和抽象类都有1到4个实现。当使用两个以上的实现时,性能开始出现差异。我正在寻找对此行为的解释(以及错误共识的起源)。 最佳答案 There'saconsensusthatusinginterfacesisbetterthanusingclasses.这太简单了。接口(interface)和抽象类各有优势。您链接

java - for循环条件中方法调用的效率

我正在编写一个游戏引擎,其中包含在ArrayList中的一组对象使用for循环进行迭代。显然,效率是相当重要的,所以我想知道循环的效率。for(Stringextension:assetLoader.getSupportedExtensions()){//dostuffwiththeextensionhere}其中getSupportedExtension()返回String的ArrayList。我想知道的是,每次循环迭代新扩展时是否调用该方法。如果是这样,做这样的事情会更有效率吗:ArrayListsupportedExtensions=((IAssetLoader)loader).

java - 关键字 final 对 JVM 有什么影响吗?

这个问题在这里已经有了答案:DoesuseoffinalkeywordinJavaimprovetheperformance?(14个答案)关闭7年前。现在,我最近遇到了一条建议,建议您应尽可能广泛地使用关键字final。这很好,可以防止程序员开枪打自己的腿——也就是说,重新分配不应重新分配的变量。但是,它还有其他目的吗?也就是说,JVM能否使用有关最终变量的信息以某种方式优化字节码,使其运行得更快(构建更好的流水线或在多线程环境中使用它)?或者只是一种语法糖,可以最大限度地减少代码开发过程中出错的可能性?

Java 基准测试工具

我编写了一个小型java应用程序,我需要为其获取性能指标,例如内存使用量、运行时间等,是否有任何简单易用的性能测量工具可用? 最佳答案 Yourkit非常好(30天免费试用)。Eclipse还内置了TPTPtools. 关于Java基准测试工具,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/260338/

java - 循环是否每次都需要更长的时间来执行?

我正在从事一些涉及将邮政编码、城市和国家/地区存储在一起的J2EE项目。我们开发了一个Java类来处理每个国家/地区文件(包含每个邮政编码和每个城市)的集成。问题是对于某些国家(英国、荷兰...),文件非常大(400.000到800.000行)。我有一个while()循环,它读取下一行,获取信息并将其存储到我的数据库中。问题是,对于1000或10.000行的第一行,过程很快,非常快,然后每次循环时似乎都在变慢,然后恰好在150.000行后抛出HeapSpaceOverflowException。我首先想到有些对象没有被垃圾回收并减慢了我的算法,但我无法弄清楚是哪一个。此外,当我在我的P

java - 了解 Collection.isEmpty() 和 Collection.size() == 0 之间的区别?

这个问题在这里已经有了答案:CheckingifacollectionisemptyinJava:whichisthebestmethod?(13个答案)Whyislist.size()>0slowerthanlist.isEmpty()inJava?(9个回答)关闭8年前。我已经阅读了很多关于isEmpty()和size()之间的区别的文章>0用于检查collection是否为空或不,发现isEmpty()的性能优于size()但我无法轻易理解为什么isEmpty()的性能很好,即使isEmpty()里面只有size==0吗?我的问题是:任何人都可以轻松解释在哪种情况下isEmpty