`

java 集合性能测试

阅读更多

package fubar;

 

import gnu.trove.map.hash.TIntObjectHashMap;

 

import java.util.HashMap;

 

import javolution.util.FastMap;

 

import cern.colt.map.OpenIntIntHashMap;

import cern.colt.map.OpenIntObjectHashMap;

 

public class Compare {

 

public static void main(String args[]) {

 

System.out.println("1st line: time used(s)\n2nd line: heap memory used so far(MB)");

 

int n = 100000000;

 

long startTime = System.nanoTime();

long startHeapSize = Runtime.getRuntime().freeMemory();

 

// BEGIN: benchmark for Java's built-in hashmap

System.out.println("\n===== Java's built-in HashMap =====");

HashMap jIntIntMap = new HashMap();

 

System.out.println("\n-- " + n + " puts(key, value) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

jIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " gets(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

jIntIntMap.get(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " containsKey(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

jIntIntMap.containsKey(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

// END

// //////////////////////////////////////////////////////////////////////////////////////////

 

// BEGIN: benchmark for Java's built-in hashmap

{

System.out.println("\n===== Javolution  HashMap =====");

FastMap fastMap = new FastMap();

 

System.out.println("\n-- " + n + " puts(key, value) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

fastMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " gets(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

fastMap.get(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " containsKey(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

fastMap.containsKey(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

}

// END

 

// //////////////////////////////////////////////////////////////////////////////////////////

 

// BEGIN: benchmark for Trove's TIntIntHashMap

System.out.println("\n===== Trove's TIntIntHashMap =====");

TIntObjectHashMap tIntIntMap = new TIntObjectHashMap();

 

System.out.println("\n-- " + n + " puts(key, value) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

tIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " gets(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

tIntIntMap.get(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " containsKey(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

tIntIntMap.containsKey(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

// END

 

// BEGIN: benchmark for Colt's OpenIntIntHashMap

System.out.println("\n===== Colt's OpenIntIntHashMap =====");

OpenIntObjectHashMap cIntIntMap = new OpenIntObjectHashMap();

 

System.out.println("\n-- " + n + " puts(key, value) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

cIntIntMap.put(i, new float[] { 0f, 1f, 2f, 3f, 4f });

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " gets(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

cIntIntMap.get(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

 

System.out.println("\n-- " + n + " containsKey(key) --");

startTime = System.nanoTime();

for (int i = 0; i < n; i++) {

cIntIntMap.containsKey(i);

}

System.out.println((System.nanoTime() - startTime) / 1000000000.0);

System.out.println((startHeapSize - Runtime.getRuntime().freeMemory()) / 1048576.0);

// END

 

}

 

}

分享到:
评论

相关推荐

    java集合类类性能测试源代码

    这个“java集合类性能测试源代码”很可能是为了对比不同集合类在特定场景下的性能表现,帮助开发者选择最适合的集合实现。下面将详细解释Java集合框架中的主要类和它们的性能特性。 1. **ArrayList与LinkedList** ...

    java集合类的效率测试

    本测试着重探讨了Java集合类中的Set接口实现类(如HashSet)以及List接口实现类(如ArrayList和LinkedList)在进行增、删、改、查操作时的性能差异。 首先,我们来看ArrayList。ArrayList是一个基于数组实现的列表...

    Java集合面试问题

    根据给定文件的信息,我们可以提炼出以下关于Java集合的关键知识点: ### 1. Java集合概述与常见类 Java集合框架是Java平台的核心组件之一,它为开发者提供了多种数据结构来存储和操作对象集合。Java集合主要包括...

    《Java程序性能优化》(葛一鸣)PDF版本下载.txt

    - **性能测试工具**:如JMeter、LoadRunner等工具可以帮助开发者模拟不同负载情况下的系统表现。 - **性能监控平台**:使用Prometheus、Grafana等工具实时监控系统的关键指标,及时发现并解决问题。 - **代码剖析...

    java自定义集合类

    6. **测试与优化**:编写单元测试以确保集合类的正确性,并对其进行性能测试以进行优化。这可能涉及调整数据结构、算法或同步策略。 7. **文档注释**:为了方便其他开发者使用你的自定义集合类,记得添加详细的...

    Java程序性能优化 让你的Java程序更快、更稳定附本书示例代码(清晰版)

    Java提供了丰富的多线程工具,如ExecutorService和并发集合。理解如何正确使用这些工具,避免死锁和竞态条件,可以提高程序并行处理能力,充分利用多核处理器。 数据库交互是许多Java应用的性能瓶颈。优化SQL查询,...

    Java集合知识测试B.doc

    本测试主要针对Java集合知识进行考核,包括对象数组、集合与数组的区别、集合操作方法、并发修改异常处理、以及ArrayList、LinkedList和Vector等具体集合类的特点。 1. 对象数组是Java中的一种数据结构,它存储的是...

    java集合框架全面进阶.pdf

    Java集合框架是Java编程语言中处理对象集合的一套接口和类。该框架提供了用于存储和操作集合的标准方法。在Java集合框架中,基本的接口分为两大类:Collection和Map。 Collection接口用于表示一组对象,称为其元素...

    Mongodb的并发访问性能测试的java客户端

    在这个场景中,我们关注的是一个Java客户端,它被设计用于并发访问MongoDB数据库并进行性能测试。这个客户端涵盖了三个主要操作:查询、修改和插入,这些都是数据库操作中的基本且重要的功能。 首先,让我们深入...

    Java集合框架.pdf

    Java集合框架是Java编程语言中用于存储和操作数据的接口和类的集合。它包含了多种数据结构,如列表(List)、集合(Set)、映射(Map)等。集合框架的目的是为了提供一套统一的集合操作方法,以降低编程时的复杂性,...

    Java集合知识测试B.pdf

    这里我们根据提供的测试题内容,来深入探讨Java集合框架的一些关键知识点。 1. **对象数组**:对象数组是引用数据类型,它存储的是对象的引用而非实际对象。这意味着当你创建一个对象数组时,数组中每个元素都是...

    java性能优化集锦

    23. **定期进行性能测试**:通过性能测试发现问题并持续优化。 二、Java高性能系统常见设计与优化 这部分资料可能涵盖系统架构设计、网络优化、数据库优化等方面,包括但不限于: 1. **负载均衡**:通过负载均衡器...

    Java程序性能优化.葛一鸣.2012.10.第1版

    8. **工具与框架**:利用性能分析工具(如JProfiler, YourKit等)和性能测试工具(如JMeter, Gatling等)可以帮助识别瓶颈并进行优化。此外,Spring框架等也可能被提及,讲解如何利用其特性来提升性能。 9. **JVM...

    Java多线程安全集合

    在Java编程中,多线程安全集合是程序员在并发环境下处理数据共享时必须考虑的关键概念。这些集合确保了在多个线程访问时的数据一致性、完整...在实际开发中,我们应结合业务需求和性能测试,选择最适合的线程安全集合。

    Java集合知识测试B[借鉴].pdf

    在Java集合知识测试中,涉及到了多个关键概念和方法,以下是对这些知识点的详细解释: 1. **对象数组**:对象数组是Java中的引用数据类型,存储的是对象的引用,而不是对象本身。这意味着数组中的每个元素都是指向...

    关于Java软件的性能测试分析.zip

    常见的性能测试类型有负载测试(模拟正常和预期负载)、压力测试(超出正常负载以查看系统崩溃点)、耐久测试(长时间运行以检查系统稳定性和资源泄露)和稳定性测试(在特定负载下长时间运行以检测性能退化)。...

Global site tag (gtag.js) - Google Analytics