clone和new哪个更快 -凯发k8网页登录

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

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的时候
一定要想清楚再用,浅拷贝使用不当会出现很多问题。

posted on 2007-02-26 16:11 dreamstone 阅读(5985) 评论(7)     所属分类: jdk相关

# re: clone和new哪个更快 2007-02-26 20:40

一般系统很少使用clone的吧,你怎么想起来比较这个了呢!?  回复     

# re: clone和new哪个更快 2007-02-26 22:57

我还不知道clone干什么用的呢?搂住能不能讲讲clone一般用在什么场合啊?  回复     

# re: clone和new哪个更快 2007-02-26 23:10 dreamstone

to lang:
比较这个是因为上一篇文章用到这个结论,当时想了一下,有点疑问随便测试了一下,把结果留下

  回复     

# re: clone和new哪个更快 2007-02-26 23:12 dreamstone

to hcom :
clone的使用方法,建议你看看thinking in java写的。一些基础的东西thinking in java讲的很好,容易理解而且覆盖也够广泛。  回复     

# re: clone和new哪个更快 2007-02-27 13:40

噢,有点明白了。

有些时候我们迫切需要一个与对象a相同的对象b,但是改变对象b的状态的时候不能改变对象a,这个时候用clone就可以拷贝一个对象a,而不是拷贝对象a的引用。clone出来的对象b是享有单独内存区域的,改变b不会影响a。

不知道这样理解对不对啊  回复     

# re: clone和new哪个更快 2007-02-27 14:34 dreamstone

to hcom:
你说的大概意思对,但是如果是深拷贝复合你说的情况,如果是浅拷贝则不是,而sun的jdk很多实现默认是浅拷贝的,如果你真的想用clone的话,还是建议你完整的看一下thinking in java(这书比较好找,网上很多电子书),或者别的书也可以。  回复     

# re: clone和new哪个更快 2015-08-10 12:39

次数改成1千万,是new比较快,怎么解释?  回复     


只有注册用户后才能发表评论。


网站导航:
              
 
网站地图