`

比较赋值与System.arraycopy谁快

    博客分类:
  • JAVA
J# 
阅读更多

/*******************************************************************************
 *
 * 比较赋值与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 ) );
  }
}

分享到:
评论
2 楼 konglx 2009-06-09  
运行一下就知道了,system.arraycopy 快很多
1 楼 lkjust08 2009-05-27  
把最的的结果贴出来呀,这样更直观,更具说服务力。

相关推荐

    Java程序优化大全[参照].pdf

    例如,如果你需要复制一个整型数组,避免使用for循环,而是直接调用`System.arraycopy(array1, 0, array2, 0, array1.length)`,这样可以减少不必要的CPU和内存开销。 以上四个优化技巧都是Java开发中常见的性能...

    第03章 方法与数组 03 数组的定义与四种赋值方式

    在学习过程中,观看"第03章 方法与数组 03 数组的定义与四种赋值方式.mp4"视频将有助于你更直观地理解这些概念,通过实例演示和详细解释,你将能更好地掌握数组的操作技巧。同时,实践是检验理解的最好方式,尝试...

    Java程序将一个数组的所有元素复制到另一个数组.docx

    Java编程语言中,数组是一种非常基础且重要的...对于大数组或需要复制部分数组的情况,`System.arraycopy()` 和 `Arrays` 类的方法可能更为高效。理解这些复制方法的原理和差异是编写健壮、无副作用的Java代码的关键。

    java基础知识编程编程资料

    在Java中,可以使用`System.arraycopy()`方法来复制数组。 **1. 方法签名** ```java public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) ``` - **参数解释**: - `src...

    java程序性能优化

    以上介绍了几种常见的Java程序性能优化技巧,包括避免在循环条件中使用复杂表达式、合理设置集合类的初始大小、在`finally`块中关闭资源、使用`System.arraycopy()`代替循环复制数组以及将简单的getter/setter方法...

    大学专业试卷《JAVA》试卷B.doc

    例如,在试卷B的第二题中,使用System.arraycopy()方法将字符数组copyFrom的元素复制到字符数组copyTo中,从索引2开始,复制7个元素。 三、对象oriented编程(OOP) * 对象oriented编程是一种编程范式,将程序划分...

    Java ArrayList.add 的实现方法

    在 openJDK8u60 的源码中,我们可以看到 System.arraycopy 方法的实现实际上是一个复杂的过程,包括检查数组的边界、偏移量和长度,然后使用 native 方法来复制数组元素。 在 System.arraycopy 方法的实现中,我们...

    实现数组复制常用的5种方式及组合类的深复制(深拷贝)

    虽然它也是复制操作,但由于额外的数组创建和数据移动,其效率低于System.arraycopy()。 4. **使用clone()方法**: 如果数组是基本类型数组,clone()方法会直接返回一个副本。对于引用类型数组,如果数组的元素...

    数组_参考答案.docx

    3. `System.arraycopy()`方法:第三题中,`System.arraycopy()`是Java的内置方法,用于将源数组的一部分复制到目标数组中。在这个例子中,从源数组`copyFrom`的第三个元素开始,复制7个元素到目标数组`copyTo`的起始...

    Java基础之数组拷贝

    System.arraycopy方法4. Arrays.copyOfRange方法 1. 直接赋值 在java中,我们可以将一个数组变量直接拷贝给另一个数组变量。但拷贝后,两个数组变量引用的是同一个数组。若改变其中一个数组中的内容,另一个数组也...

    浅析ArrayList内部实现

    在上面的代码中,我们使用System.arraycopy方法将原数组中的元素复制到临时数组中,然后将临时数组赋值给原数组,从而实现了数组的扩容。 在MyArrayList中,我们还定义了一个get(int index)方法,用于根据索引获取...

    java培训相关基础知识总结

    Java提供了多种方法来复制数组,例如使用System.arraycopy()函数或者使用循环手动复制。`System.arraycopy()`示例: ```java int[] original = {1, 2, 3, 4, 5}; int[] copy = new int[original.length]; System....

    Java程序性能优化(23条).doc

    对于大量数据的数组复制,`System.arraycopy()` 方法提供了显著的性能优势,因为它是由Java虚拟机底层实现的,效率远高于使用for循环逐个元素复制。在处理大数组时,优先考虑使用`System.arraycopy()`。 除了以上...

    dotnet 6 数组拷贝性能对比.rar

    本文将深入探讨.NET 6中数组拷贝的性能对比,并将其与Java语言的相应操作进行比较。了解这些知识对于优化代码效率和提升应用程序性能至关重要。 首先,我们要知道在C#中,有几种不同的方法可以实现数组拷贝: 1. *...

    数组简单的操作.zip

    System.arraycopy(myArray, 0, copyArray, 0, myArray.length); ``` 结合给定的文件名,我们可以推测这些Java源代码文件可能包含数组的基本操作示例,如数组的初始化、遍历、求和等。`Array_px_kr_cjb.java`可能是...

    Android实现连续点击多次事件的代码详解

    在onClick事件中,我们可以使用System.arraycopy()方法来实现数组之间的复制。我们将数组向前移动一位,并将时间赋值给最后一位。然后,我们可以比较时间,如果在规定的时间内,那么就生效,执行我们所要的操作。 ...

    第03讲 JAVA数组.ppt

    赋值操作(如`bb = aa`)只会让两个数组引用指向同一块内存,而`System.arraycopy()`方法则会真正复制数组的内容到另一块内存。 在处理大量数据时,Java集合框架中的`ArrayList`和`LinkedList`等集合类通常比数组更...

    Java中数组的各种应用

    要复制一个数组,可以使用`System.arraycopy()`方法或`Arrays.copyOf()`方法。例如: ```java int[] original = {1, 2, 3}; int[] copy = new int[original.length]; System.arraycopy(original, 0, copy, 0, ...

    Java 实例 - 数组输出源代码-详细教程.zip

    例如,Java提供`System.arraycopy()`方法来复制数组的一部分到另一个数组,`Arrays.sort()`方法对数组进行排序,`Arrays.binarySearch()`进行二分查找等。这些功能都在`java.util.Arrays`类中。 此外,Java还支持...

Global site tag (gtag.js) - Google Analytics