之前看贴,有说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编程中“为了性能”尽量要做到的一些地方
测试代码:
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编程中“为了性能”尽量要做到的一些地方
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的样子。