`

Java中一些Map的性能测试

 
阅读更多

 

Java中有一些Map包含:TreeMap,HashMap,Hashtable,ConcurrentHashMap,WeakHashMap

TreeMap,WeakHashMap性能较差,他们是用红黑树实现的。

HashMap,Hashtable性能较好,使用的是hash

ConcurrentHashMap在多核机器上最好,它是专门为多核设计的,充分利用了多核的资源。

在单cpu机器下的性能:

use TreeMap cost time: 844
use HashMap cost time: 437
use HashTable cost time: 406
use ConcurrentHashMap cost time: 735
use WeakHashMap cost time: 922

use TreeMap cost time: 875
use HashMap cost time: 422
use HashTable cost time: 438
use ConcurrentHashMap cost time: 734
use WeakHashMap cost time: 938

use TreeMap cost time: 860
use HashMap cost time: 437
use HashTable cost time: 407
use ConcurrentHashMap cost time: 750
use WeakHashMap cost time: 953

在一台4个cpu的机器上的性能:

use TreeMap cost time: 547
use HashMap cost time: 266
use HashTable cost time: 266
use ConcurrentHashMap cost time: 234

use TreeMap cost time: 562
use HashMap cost time: 266
use HashTable cost time: 265
use ConcurrentHashMap cost time: 250

use TreeMap cost time: 547
use HashMap cost time: 281
use HashTable cost time: 250
use ConcurrentHashMap cost time: 250

测试代码如下:

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.TreeMap;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;

public class MapPerformanceTest {

 /**
  * @param args
  */
 public static void main(String[] args)
 {
  System.out.print("use TreeMap ");
  testCostTime(new TreeMap());
  System.out.print("use HashMap ");
  testCostTime(new HashMap());
  System.out.print("use HashTable ");
  testCostTime(new Hashtable());
  System.out.print("use ConcurrentHashMap ");
  testCostTime(new ConcurrentHashMap());
  System.out.print("use WeakHashMap ");
  testCostTime(new WeakHashMap());
 }

 private static void testCostTime(Map map) {
  int NUMBER = 300000;
  long startTime = System.currentTimeMillis();
  for (int i = 0; i < NUMBER; i++)
  {
   if (!map.containsKey(i))
   {
    map.put(i, String.valueOf(i));
   }
  }
  long endTime = System.currentTimeMillis();
  System.out.println("cost time: "+(endTime-startTime));
 }
}
 

 

 

原文:

http://blog.163.com/gaochan@126/blog/static/355557322010019540563/

分享到:
评论

相关推荐

    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

    在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。...在实际使用中,应结合性能测试和业务需求来确定最适合的Map类型。

    Java中常用Map测试示例

    在Java编程语言中,`Map`接口是集合框架的重要组成部分,它存储键值对的数据结构。这个接口提供了许多高效的方法来存储、检索和操作数据。本示例将深入探讨Java中常用的`Map`实现,包括`HashMap`和`EnumMap`。 首先...

    java Map遍历方法

    在Java编程语言中,`Map`接口是集合框架的一个重要组成部分,它提供了键值对(key-value pairs)的存储和访问。这篇博文主要探讨了如何遍历Java中的`Map`对象,下面将详细介绍几种常见的遍历`Map`的方法。 1. **...

    java中jython操作把python数据类型转成java类型

    Map, String&gt; javaMap = (Map, String&gt;) pythonDict.__tojava__(Map.class); ``` 这个过程将Python字典的键值对映射到Java的Map对象。 3. Python Set到Java Set: Python的set可以转换为Java的Set: ```java ...

    JAVA遍历Map所有元素.doc

    JAVA语言中,Map是一种非常常用的数据结构,用于存储键值对。然而,在遍历Map中的所有元素时,我们需要使用合适的方法来提高效率。本文将对JAVA中遍历Map所有元素的两种常用方法进行详细介绍。 方法一:使用...

    Java程序性能相当的好

    此外,日志和性能测试也是优化过程中的重要环节,它们能记录程序运行数据,提供决策依据。 总之,优化Java程序性能是一个系统性的工作,涉及代码质量、JVM配置、垃圾回收机制、并发处理以及监控等多个方面。通过...

    Java_Technology_Concept_Map.zip_java map

    最后,Java的开发工具和框架也是其生态的一部分,如Eclipse、IntelliJ IDEA这样的集成开发环境(IDE),Spring框架用于企业级应用开发,Maven或Gradle作为构建工具,JUnit进行单元测试,以及Apache HttpClient、Log4...

    Java实战 坦克大战源代码,将Java中一些主要知识点连接起来

    在本项目"Java实战 坦克大战源代码"中,你将有机会深入学习和实践Java编程中的核心概念和技术。这个项目旨在通过构建一个经典的坦克大战游戏,将Java中的主要知识点串联起来,让你逐步掌握编程技能。下面我们将详细...

    java遍历大容量map的正确方法.pdf

    下面是一个简单的性能测试例子: ```java long startTime = System.currentTimeMillis(); // 使用推荐的遍历方式 for (Map.Entry, String&gt; entry : map.entrySet()) { // ... } long endTime = System....

    java行转列的例子

    Java是一种广泛使用的编程语言,尤其在企业级应用和大数据处理中占据重要地位。"java行转列"这个主题是数据处理中的一个常见需求,尤其是在数据分析、报表生成或数据显示时。当我们从数据库中获取数据,有时会遇到...

    Java遍历Map对象的四种方式

    Java中的Map接口是用于存储键值对的数据结构,它的遍历方法有多种,这里我们将详细介绍四种常见的遍历方式。每种方法都有其适用场景和优缺点,选择合适的遍历方式可以提高代码的效率和可读性。 1. 方式一:使用`...

    Java Map、List、Set Swing 英文词频统计

    在Java编程语言中,Map、List和Set是三个核心的集合接口,它们分别代表了键值对、有序元素序列和不重复元素集。本项目利用这些数据结构进行英文词频统计,结合Swing构建用户界面,提供了一种交互式的文本分析工具。 ...

    java动态特性eval

    Java中虽然没有直接对应的内置方法,但通过一些技术手段,我们可以模拟实现类似的功能。 1. **Java反射机制**: Java反射API允许我们在运行时检查类、接口、字段和方法的信息,甚至能够在运行时调用私有方法或访问...

    Java读取Map的两种方法与对比

    本文将详细介绍两种常见的遍历Map的方法,并通过性能测试进行对比。 一、遍历Map的方法 1. 方法A: ```java Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map...

    java api中文/英文

    例如,集合框架是Java编程中非常重要的部分,它包括了List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)等接口和实现,这些容器类帮助我们组织和管理数据。 在实际开发中,...

    集群Hadoop性能测试

    【集群Hadoop性能测试】是针对Hadoop分布式计算框架进行的一系列性能评估活动,目的是找出最佳配置以提升系统效率。测试方法主要通过shell自动化脚本来完成,包括生成配置文件、执行测试、记录时间以及恢复默认配置...

    javamap.rar_源码

    在本项目"javamap.rar_源码"中,我们可以看到一个使用Java编程语言实现的电子导航仪系统。这个系统允许用户自定义起点和终点,从而实现路线规划和导航功能。下面将对这个项目的相关知识点进行详细阐述。 首先,我们...

    java中文帮助文档

    4. **集合框架**:Java集合框架是处理对象数组和数据结构的重要工具,包括List、Set、Map接口及其实现类如ArrayList、LinkedList、HashMap等。这部分内容将教你如何有效地存储和操作数据。 5. **输入/输出(I/O)**:...

    JAVA1.9 CN中文 API文档

    在Java 9中,G1垃圾收集器支持并行全GC,提高了大型堆的垃圾回收性能。 通过阅读《JAVA1.9 CN中文 API文档》(jdk-9_CN.CHM),开发者可以详细了解这些新特性的具体用法和背后的原理,从而更好地利用Java 9进行...

Global site tag (gtag.js) - Google Analytics