之前看贴,有说2维数组占用内存是1维数组的10倍左右,于是测试如下:
测试代码:
     long size=Runtime.getRuntime().totalMemory();
     byte[]bs=new byte[100000000];
     System.out.println("花费:"+(Runtime.getRuntime().totalMemory()-size));
     size=Runtime.getRuntime().totalMemory();
     byte[][]bs1=new byte[10000][10000];//与1维数组元素数量相同
     System.out.println("花费:"+(Runtime.getRuntime().totalMemory()-size));
结果:
花费:100007936
花费:133627904
多次运行结果相同。
貌似没有10倍,只有1.3倍,用String测试,元素数量改为50000000,多次测试结果是1.15-1.3倍。
是我的测试方法有问题还是原帖说法有误?
以下为原帖地址
Java编程中“为了性能”尽量要做到的一些地方

解决方案 »

  1.   

    顺便测了一下Long.parseLong(String)和String.equals(Long.toString())的效率     String id="1937289347";
         Long lid=1937289347L;
         long time=System.currentTimeMillis();
         for(int i=0;i<10000000;i++){
         if(Long.parseLong(id)==lid.longValue());
         }
         System.out.println("花费:"+(System.currentTimeMillis()-time));
         time=System.currentTimeMillis();
         for(int i=0;i<10000000;i++){
         id.equals(lid.toString());
         }
         System.out.println("花费:"+(System.currentTimeMillis()-time));
    结果前者要比后者花费时间更长,大概是4:3的样子。