感觉速度相差不大呢?甚至调成100万1000万测试发现反倒不如默认16的速度呢?时代进步了还是我代码写错了?

来源:3-5 HashMap构造方法优化2

幺蛾子老四

2023-04-16 20:06

package com.barry;

import java.util.HashMap;
import java.util.Map;

/**
* @Author BarryFitzgerald
* @Date 2023/4/16 19:35
* @Description:
* 1、创建10HashMap,每个HashMap含有10万条记录;
* 2、传递不同的构造方法的参数比较速度;
* 3、构造方法参数分别使用(160.75f)和(163840.75
*/
public class TestMapWithParameter {
   public static void main(String[] args) {
       long sum = 0L;
       for(int i=0;i<10;i++){
           sum +=new TestMapWithParameter().inputMap(100000,0.75f);
       }
       System.out.println(sum/10);
   }

   public Long inputMap(int initialCapacity,float loadFactor){
       String key,value;
       Map<String, String> testMap = new HashMap<String, String>(initialCapacity,loadFactor);
       long start = System.nanoTime();
       for(int i=0;i<100000;i++){
          key = String.valueOf(i);
          value = "value";
          testMap.put(key,value);
       }
       long end = System.nanoTime();
       long time = end - start;
       System.out.println("creating new hashmap using:"+time);
       return time;
   }
}


写回答 关注

1回答

  • 慕少3592971
    2024-06-12 20:48:56

    1万的空间和100万差别很大

    16和100万差别也很大,

    在100万数据面前,16383的空间和16的并没有什么差别。

    再加上重复运行相同代码,Java会对优化,可能会更快。

    所以会造成16的比16384快的可能。

Map从入门到性能分析

拒绝HaspMap一条道走到黑,带你选择最合适的Map

8511 学习 · 14 问题

查看课程

相似问题