`
lichaozhangobj
  • 浏览: 100863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转:Clone和New哪个更快

    博客分类:
  • java
 
阅读更多

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 深克隆 浅克隆

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

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

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

    fastify-preact-htm-boilerplate:使用Fastify,Preact和htm快速引导您的下一个Web应用程序

    git clone https://github.com/lmammino/fastify-preact-htm-boilerplate.git my-new-project cd my-new-project rm -rf .git npm install 现在喜欢在src编辑示例代码: src/ui :适用于您的前

    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); ...

    Linux常用命令全集

    本文将详细介绍一系列常用的Linux命令及其用法,帮助初学者更快地适应Linux环境。 #### 基本文件操作命令 1. **cat** - 用于查看文件内容。 - 示例: `cat filename` 可以显示文件内容。 2. **cd** - 改变当前...

    simple-boilerplate:一个简单的webpack样板,可让您轻松使用HTML,JS和CSS

    更漂亮 devServer :chequered_flag: 快速开始 # Download repository: git clone https://github.com/fedorovsky/simple-boilerplate simple-boilerplate # Go to the app: cd simple-boilerplate # Install ...

    java性能优化

    对于乘法和除法运算,可以使用移位操作来替代,如`val 等同于`val * 8`,这通常更快。不过,要注意移位操作可能会降低代码可读性,需适当添加注释。 **J2EE篇**: 针对JSP、EJB和JDBC应用,有特定的优化策略: 1...

    papillon-new-day

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

    2012-Java面试宝典new版

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

    hello-world:分享与生活和科技相关的有用信息

    :sparkles: 最小 :red_heart: 清洁| :rocket: 更快 :mobile_phone: PWA :play_button: 感谢@alexbrown提供了这个很棒的轻量级Gridsome Starter主题-https: :hugging_face: 此主题适合状态网站或Notes。 使用...

    jQuery EasyUI 1.5.5 离线简体中文API文档 含完整开发工具包+皮肤+扩展+演示

    这次长时间未更新一方面是因为工作和生活的关系,另外一方面也是为了抗议那些盗用我东西的人或网站盗用行为可耻,这次我停更了3个版本就是因为这些垃圾。如果你们继续盗用,我将永久停更。另外,所有加群的人,加...

    【Java面试+Java后端技术学习指南】

    这些只是Java后端技术的一部分,还有更多的高级主题如并发编程、JVM内存模型、分布式系统、性能优化等,都需要不断学习和实践。通过深入理解和应用这些知识点,可以提升个人的Java技术水平,从而在面试和工作中...

    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 ...

    java 技能优化集锦

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

    rails-airbnb-clone

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

    git的基本用法

    ### Git基本用法详解 #### 一、Git命令初识 **Git** 是一款非常流行的分布式版本控制系统,广泛应用于软件开发和其他需要版本控制的场景。...这些知识将帮助您更高效地使用Git进行版本控制和团队协作。

    protogen工具

    .proto文件是protobuf的数据模型定义文件,它采用类似于XML或JSON的文本格式,但更紧凑且解析速度快。开发者在.proto文件中定义消息类型、服务接口等,这些定义被编译后会生成相应的强类型数据结构。 例如: ```...

    Java面试指南.pdf

    - Java创建对象的方式:可以通过new关键字直接创建,也可以通过反射机制、clone方法或反序列化等方式创建。 - 序列化和反序列化:序列化是将对象的状态信息转换为可以存储或传输的形式的过程,反序列化则是把序列...

    tachyons:Tachoyns是雨果的快速响应主题

    转到Hugo Releases并下载适合您的OS和体系结构的版本。 保存在您的PATH主要的可执行文件雨果(或hugo.exe在Windows上)的地方,我们会在接下来的步骤中使用它。 安装Hugo上提供了更完整的说明。 创建一个新站点并...

Global site tag (gtag.js) - Google Analytics