测试性能:JAVA行优先与列优先的性能差距

定义一个10240*10240的byte数组,分别采用行

优先与列优先的循环方式来计算 这些单元格的总

和,看看性能的差距,我们直接贴出源码:


import java.util.Date;
import java.util.Random;

public class TestOperation{
	/**
	 * 随机初始化数据
	 * @return
	 */
	public static byte [] [] init(){
		byte [] [] b =new byte[10240][10240];
		for(int i=0;i<10240;i++){
			for(int k =0; k<10240;k++){
				Random d = new Random();
				int x =d.nextInt(128)-1;
				b[i][k]=Byte.parseByte(String.valueOf(x));
			}
		}
		return b;
	}
	/**
	 * 行优先
	 * @param args
	 */
	public static void getTimeByProcessByHang(byte [] [] b){
		Long currentStrarTime =new Date().getTime();
		System.out.println("Hang:currentStrarTime:"+currentStrarTime);;
		Long sum=0l;
		for(int i=0;i

 
  


这里我们测试到:

行优先:383ms。

列优先:1453ms.

测试性能:JAVA行优先与列优先的性能差距_第1张图片


行列优先原则在计算机领域的应用主要如下。行优先或

者列优先没有好坏,但其直接涉及到对内存中数据的最

佳存储访问方式。因为在内存使用上,程序访问的内存

地址之间连续性越好,程序的访问效率就越高;相应地,

程序访问的内存地址之间连续性越差。所以,我们应该

尽量在行优先机制的编译器,比如C/C++CUDA等等

上,采用行优先的数据存储方式;在列优先机制的编译

器,比如Fortune,Matlab等等上,采用列优先的数据存

储方式。但这种思想渗透到编程中之后,代码的质量就

会提高一个档次



你可能感兴趣的:(JAVA—性能测试)