RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Java>列表

比较赋值与System.arraycopy谁快

来源: 作者: 时间:2007-09-17 点击:
/*******************************************************************************
*
* 比较赋值与System.arraycopy谁快
*
* 复制的内容越多,System.arraycopy优势更明显
*
* Author: NeedJava
*
* Modified: 2007.09.16
*
******************************************************************************/
public final class WhoFaster
{
public static void main( String[] args )
{
/*/
int begin=100;

int length=12;

String temp="12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"黑客帝国忍者神龟变形金刚"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890";

int times=10000000; //千万
/*/
int begin=100;

int length=120;

String temp="12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"黑客帝国忍者神龟变形金刚"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890"
+"12345678901234567890";

int times=1000000; //百万
//*/

char[] oldArray=temp.toCharArray();

char[] newArray=null;

long start=0L;


////////////////////////////////////////////////////////////////////////////
//
// 单纯赋值
//
////////////////////////////////////////////////////////////////////////////
newArray=new char[length];

start=System.currentTimeMillis();

for( int i=0; i<times; i++ )
{
for( int j=0; j<length; j++ )
{
newArray[j]=oldArray[begin+j];
}
}

System.out.println( new String( newArray )+" "+( System.currentTimeMillis()-start ) );


////////////////////////////////////////////////////////////////////////////
//
// System.arraycopy
//
////////////////////////////////////////////////////////////////////////////
newArray=new char[length];

start=System.currentTimeMillis();

for( int i=0; i<times; i++ )
{
System.arraycopy( oldArray, begin, newArray, 0, length );
}

System.out.println( new String( newArray )+" "+( System.currentTimeMillis()-start ) );
}
}

原文链接:http://www.blogjava.net/needjava/archive/2007/09/16/145513.html

刚刚写的看谁复制的快,只是由于在项目中犹豫到底是用哪个好而写的,没想到大家很感兴趣,那我再把读取文件谁快也翻上来,有错尽管拍砖。

另外,最好能放在有上万张10KB以上的图片的文件夹下运行,否则不一定看出效果,我的是六千多张,10240轻松取胜。

import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;


/*******************************************************************************
*
*
* Author: NeedJava
*
* Modified: 2007.08.26
*
******************************************************************************/
public final class ReadFaster
{
/*****************************************************************************
*
* 构造函数,默认使用当前路径
*
****************************************************************************/
public ReadFaster()
{
this( "." );
}

public ReadFaster( String fileName )
{
this.listPictures( null, fileName );
}


/*****************************************************************************
*
* 列出当前目录下的文件列表,包括文件和文件夹
*
****************************************************************************/
private final void listPictures( File path, String fileName )
{
File file=new File( path, fileName );

if( file.isDirectory() )
{
//得到当前目录下的文件列表,包括文件和文件夹
String[] children=file.list();

//如果子集为空,就放弃后面的操作
if( children==null )
{
return;
}

//排序
//java.util.Arrays.sort( children );

//如果子集不为空,则显示
for( int i=0; i<children.length; i++ )
{
listPictures( file, children[i] );
}
}
else if( file.isFile() )

共2页: 上一页 1 [2] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章