`
dreamstone
  • 浏览: 289025 次
  • 来自: ...
文章分类
社区版块
存档分类

Clone和New哪个更快

 
阅读更多
Clone和new哪个更快呢,这个问题的答案不是一定的,要根据实际情况决定:
情况一:对象简单,这个时候new更快,测试代码如下:
class TestObj implements Cloneable{
    
public Object clone(){
        Object obj 
= null ;
        
try{
            obj 
= super.clone();
        }
catch(Exception e){
        }

        
return obj;  
    }

}

public class CloneVsNew {
    
static void cloneTest(int time){
        TestObj obj
=new TestObj();
        
for(int i=0;i<time;i++){
            obj.clone();
        }

    }


    
static void newTest(int time) {
        TestObj obj
=new TestObj();
        
for(int i=0;i<time;i++){
            obj
=new TestObj();
        }

    }

    
/** *//**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
long start;
        
long stop;
        
int times=1000000;
        
        System.gc();
        

        start
=System.currentTimeMillis();
        newTest(times);
        stop
=System.currentTimeMillis();
        System.out.println(
"newTest Time:"+(stop-start));
        
        System.gc();
        
        start
=System.currentTimeMillis();
        cloneTest(times);
        stop
=System.currentTimeMillis();
        System.out.println(
"cloneTest Time:"+(stop-start));
        
    }


}


情况二:对象复杂,例如一个包括集合类的类的对象。而且这个对象的Clone使用的浅拷贝。(其实快主要是快在这个地方)
不用例子了,浅拷贝只是引用的复制,肯定比复制快。

还有一些其它的情况,但总体来说,随着对象的复杂,clone越来越快,new越来越慢。不过在使用clone的时候
一定要想清楚再用,浅拷贝使用不当会出现很多问题。

分享到:
评论

相关推荐

    Kara is a new brand programming language which is easy to learn.Kara是一个更容易学习的新概念编程语言 .zip

    Kara 的执行速度更快,体积更小,语法更简单。如何安装 Kara?您可以使用以下命令安装 Kara git clone https://github.com/heliebiandexbilibili/Kara.git 或者在“releases”中下载文件。欢迎您报告问题并为 Kara ...

    java 深克隆 浅克隆

    - 深克隆可能消耗更多内存和时间,因为它需要创建完整的对象树副本。 - 如果对象中包含不可序列化的成员,深克隆方法可能会失败。在这种情况下,需要手动实现深克隆逻辑。 理解深克隆和浅克隆的概念对于编写复杂的...

    rails-airbnb-clone

    【标题】"rails-airbnb-clone" 是一个基于Ruby on Rails框架开发的项目,旨在模仿知名住宿预订平台Airbnb的功能和用户体验。这个项目由一个团队合作完成,展示了一个实际的Web应用程序开发流程,特别是针对那些熟悉...

    Angular中后台前端解决方案-NgAlain介绍.docx

    Angular 中后台前端解决方案-NgAlain 介绍 ...安装 NgAlain 非常简单,只需要使用以下命令行安装:ng new demo --style less cd demo ng add ng-alain ng serve,然后 clone git 仓库:$ git clone --depth=1 ...

    papillon-new-day

    巴比龙新的一天 Papillon的新时代是我的大多数Web项目的主题。 它使用开发框架和自定义javascript库,可帮助您快速轻松地开发基于Web的应用程序...git clone https://github.com/ghaoil/papillon-new-day.git ./new-day

    C#数字图像处理算法

    Image resized = img.Clone(new Rectangle(0, 0, img.Width / 2, img.Height / 2), img.PixelFormat); // 旋转图像90度 Image rotated = img.Clone(new Rectangle(0, 0, img.Height, img.Width), img.PixelFormat); ...

    cash-app-clone

    该入门工具随附了主要的Gatsby配置文件,您可能需要使用React的快速应用生成器来快速启动和运行。 还有其他更具体的想法吗? 您可能需要查看我们充满活力的集合。 :rocket: 快速开始创建一个Gatsby网站。 使用...

    java个人总结.docx

    `StringBuffer`是线程安全的,适合多线程环境,而`StringBuilder`则在单线程环境中更快,因为它不需要同步。它们都继承自`AbstractStringBuilder`,并提供了如`append()`和`insert()`等方法。 `hashCode`方法用于...

    Java性能优化技巧集锦.pdf

    - Java NIO(New Input/Output)的介绍,相比于标准IO,NIO支持更快、非阻塞式的I/O操作。 - 如何在Web应用程序中合理使用I/O操作以优化性能。 3. Java对象创建和垃圾回收(1.3节): - fillInStackTrace()方法...

    C# 图片处理缩放旋转移动

    在处理复杂的图像操作时,注释可以帮助其他开发者更快地理解代码逻辑。 总结,C#提供了丰富的API来处理图像,包括加载、显示、缩放、旋转和移动等操作。通过结合控件和图形API,我们可以构建出具有交互性的图像处理...

    java编程文档

    ### Java实例化类的方法 Java 是一种广泛使用的面向对象编程语言,它支持多种类实例化的技术,这使得开发者可以根据不同的需求...此外,通过理解这些实例化技术,还可以更好地掌握 Java 编程的核心概念和技术细节。

    Java性能优化技巧集锦

    - 移位操作(左移和右移)通常比乘法和除法更快。例如,将乘以8的操作替换为左移3位,乘以2的操作替换为左移1位。这可以显著提升循环中的性能,但要注意代码可读性。 **J2EE篇** 针对J2EE环境,有以下优化建议: ...

    JAVA-SE入门学习——第八讲集合

    LinkedList基于双向链表,插入和删除速度快,但随机访问慢。 1.8 Map接口【理解】 Map接口不同于Collection接口,它存储的是键值对(key-value)的数据结构。HashMap、TreeMap、LinkedHashMap和Hashtable是Map接口...

    Python库 | django-modelclone-0.6.1.tar.gz

    通过理解和掌握这个库,你可以更有效地利用Python和Django来构建复杂的数据库应用。在实际开发中,结合`django-modelclone`与其他Django库,如`django-rest-framework`进行API开发,或者`django-crispy-forms`来美化...

    2012-Java面试宝典new版

    **问题**: `String s=new String("xyz");`创建了几个`String`对象? 二者之间有什么区别? **答案**: 这行代码创建了两个`String`对象:一个是堆内存中的新对象,另一个是字符串常量池中的对象。“xyz”这个字符串...

    原型设计模式prototype

    3. **性能优化**:对于深拷贝的情况,原型模式可以比直接构造新对象更快,特别是当对象结构复杂时。 ### 源码实现 在Java中,我们可以创建一个原型接口: ```java public interface Prototype { Prototype clone...

    android设计模式之原型模式

    `Parcelable`则更为高效,通常用于Activity之间的数据传递和保存,但需要编写更多的代码。 在"prototype"压缩包中,我们可以看到一个简单的原型模式实现。首先,定义一个抽象的原型类(Prototype): ```java ...

    .net生成和解析二维码及调用摄像头识别二维码源码

    相比于一维条形码,二维码具有更大的数据容量和更高的错误纠正能力。二维码由多个黑白小方块组成,通过特定算法编码和解码信息。 **二、生成二维码** 在C#中,我们可以使用开源库如ZXing.Net(Zebra Crossing for ...

    java 技能优化集锦

    在Java编程中,优化技能是提高程序效率和性能...以上这些优化策略可以帮助开发者编写更高效、运行更快的Java代码,尤其是在处理大规模并发和大数据量时。在实际开发中,应根据具体应用的需求和环境选择合适的优化方法。

    java优化java优化

    7. **利用位移运算替代乘法和除法**:在循环等性能敏感区域,位移运算(左移和右移)比乘法和除法更快。例如,乘以2可以表示为左移1位,除以2可以表示为右移1位。但要注意,这可能会降低代码的可读性。 除了这些...

Global site tag (gtag.js) - Google Analytics