Tag: 性能

Java – Vector vs ArrayList性能 – 测试

每个人都说应该使用矢量因为性能(导致Vector在每次操作和东西之后同步)。 我写了一个简单的测试: import java.util.ArrayList; import java.util.Date; import java.util.Vector; public class ComparePerformance { public static void main(String[] args) { ArrayList list = new ArrayList(); Vector vector = new Vector(); int size = 10000000; int listSum = 0; int vectorSum = 0; long startList = new Date().getTime(); for (int i = 0; i < size; i++) { […]

Java性能计时库

我经常在System.nanoTime()对中包装代码以便对其进行计时。 就像是: long start = System.nanoTime(); methodToBeTimed(); long elapsedTime = System.nanoTime() – start; 有什么好的计时库可以解决这个问题吗? 还将接受自行开发的代码。 NB 分析器在这里不是解决方案,因为我想在unit testing中强制执行一些时间限制,所以我想以编程方式对方法进行计时。

Hashmap与arrays性能

当Array的索引已知时,使用Arrays或HashMaps更好(性能方面)吗? 请记住,示例中的’objects array / map’只是一个示例,在我的实际项目中它由另一个类生成,所以我不能使用单个变量。 ArrayExample: SomeObject[] objects = new SomeObject[2]; objects[0] = new SomeObject(“Obj1”); objects[1] = new SomeObject(“Obj2”); void doSomethingToObject(String Identifier){ SomeObject object; if(Identifier.equals(“Obj1”)){ object=objects[0]; }else if(){ object=objects[1]; } //do stuff } HashMapExample: HashMap objects = HashMap(); objects.put(“Obj1”,new SomeObject()); objects.put(“Obj2”,new SomeObject()); void doSomethingToObject(String Identifier){ SomeObject object = (SomeObject) objects.get(Identifier); //do stuff } HashMap看起来要好得多,但我真的需要这方面的表现才能优先考虑。 编辑:井阵,那么,建议仍然欢迎 […]

Java ConcurrentHashMap优于HashMap性能吗?

我刚刚阅读了“清洁代码”一书,并发现了这一说法: 当Java年轻的时候,Doug Lea写了一本开创性的书[8] Java中的Concurrent Programming。 随着本书的出现,他开发了几个线程安全的集合,后来成为java.util.concurrent包中JDK的一部分。 该软件包中的集合对于multithreading情况是安全的,并且它们表现良好。 实际上,几乎在所有情况下, ConcurrentHashMap实现都比HashMap表现更好 。 它还允许同时并发读取和写入,并且它具有支持常见复合操作的方法,否则这些操作不是线程安全的。 如果Java 5是部署环境,请从ConcurrentHashMap开始 请注意,在上面的引用中,我使用了“[n]”,其中n是某个数字,表示作者提供引用的地方,正如您所看到的,他没有为粗体部分提供任何参考。 并不是说我不相信这个陈述,但我很想知道这个陈述的支持证据。 那么,有没有人知道任何显示ConcurrentHashMap和HashMap的性能统计信息的资源? 或者任何人都可以向我解释为什么ConcurrentHashMap比HashMap快? 当我rest时,我可能会调查ConcurrentHashMap的工作实现,但是现在我想听听SOERS的回答。

对Java程序进行基准测试

对于大学,我执行字节码修改并分析它们对Java程序性能的影响。 因此,我需要Java程序—最好用于生产 – 以及适当的基准测试。 例如,我已经获得了HyperSQL并通过基准程序PolePosition测量其性能。 在没有JIT编译器的JVM上运行的Java程序。 谢谢你的帮助! PS:我不能使用程序来测试JVM或Java语言本身(例如Wide Finder)的性能。

在Java中连接两个字符串的最快方法是什么?

在Java中连接两个字符串的最快方法是什么? 即 String ccyPair = ccy1 + ccy2; 我正在使用cyPair作为HashMap一个键,并且它在一个非常紧凑的循环中被调用来检索值。 当我描述然后这是瓶颈 java.lang.StringBuilder.append(StringBuilder.java:119) java.lang.StringBuilder.(StringBuilder.java:93)

Java大文件磁盘IO性能

我的硬盘上有两个(每个2GB)文件,想要将它们相互比较: 使用Windows资源管理器复制原始文件大约需要。 2-4分钟(即读写 – 在同一物理和逻辑磁盘上)。 使用java.io.FileInputStream读取两次并在每个字节的字节上比较字节数组需要20多分钟。 java.io.BufferedInputStream缓冲区为64kb,文件以块的forms读取然后进行比较。 比较完成是一个紧凑的循环之类 int numRead = Math.min(numRead[0], numRead[1]); for (int k = 0; k < numRead; k++) { if (buffer[1][k] != buffer[0][k]) { return buffer[0][k] – buffer[1][k]; } } 我该怎么做才能加快速度呢? NIO应该比普通的流更快吗? Java无法使用DMA / SATA技术,而是执行一些缓慢的OS-API调用吗? 编辑: 谢谢你的回答。 我做了一些基于它们的实验。 正如安德烈亚斯所示 流或nio方法没有太大差别。 更重要的是正确的缓冲区大小。 我的实validation实了这一点。 由于文件是以大块读取的,所以即使是额外的缓冲区( BufferedInputStream )也不会提供任何内容。 优化比较是可能的,并且我通过32次展开获得了最佳结果,但与磁盘读取相比,花费的时间比较小,因此加速很小。 看起来我无能为力;-(

java在运行时动态增加xmx

我的机器中有一个jvm服务器,现在我想让我的两个服务器坐在同一台机器上,但是我希望备用服务器有一个非常少的内存分配xmx因为它是被动的,一个是主服务器(活动的)下来我想为我的被动服务器分配更多的内存,这个服务器已经启动而没有重新启动它(我已经让它们都有太多的xmx – 注意它们会在启动时消耗内存而我不能允许outOfMemory)。 所以我想要被动 – 低xmx一旦主动下降,我希望我的被动接收更多的xmx。 有没有办法让我实现这一目标。 谢谢

在JNI中,如何根据IBM的性能建议缓存类,methodID和fieldID?

我在IBM上读到了这一点 要访问Java对象的字段并调用它们的方法,本机代码必须调用FindClass(),GetFieldID(),GetMethodId()和GetStaticMethodID()。 对于GetFieldID(),GetMethodID()和GetStaticMethodID(),为给定类返回的ID在JVM进程的生命周期内不会更改。 但是获取字段或方法的调用可能需要在JVM中进行大量工作,因为字段和方法可能是从超类inheritance的,这使得JVM在类层次结构中向上移动以找到它们。 因为给定类的ID是相同的,所以您应该查找它们一次然后重复使用它们。 同样,查找类对象可能很昂贵,因此它们也应该被缓存。 如何在JNI中缓存 methodID , fieldID和class对象? 是否有必须遵循的内置方法或特定程序?

连接池中的最佳连接数

目前我们正在使用4个带有8GB RAM的cpu windows box,MySQL 5.x安装在同一个盒子上。 我们正在为我们的应用程序使用Weblogic应用程序服务器 我们针对我们的应用程序定位了200个并发用户(显然不适用于相同的模块/屏幕)。 那么我们应该在连接池中配置什么是最佳连接数(最小和最大数量)(我们使用的是weblogic AS’连接池机制)?