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 的执行速度更快,体积更小,语法更简单。如何安装 Kara?您可以使用以下命令安装 Kara git clone https://github.com/heliebiandexbilibili/Kara.git 或者在“releases”中下载文件。欢迎您报告问题并为 Kara ...
- 深克隆可能消耗更多内存和时间,因为它需要创建完整的对象树副本。 - 如果对象中包含不可序列化的成员,深克隆方法可能会失败。在这种情况下,需要手动实现深克隆逻辑。 理解深克隆和浅克隆的概念对于编写复杂的...
在处理复杂的图像操作时,注释可以帮助其他开发者更快地理解代码逻辑。 总结,C#提供了丰富的API来处理图像,包括加载、显示、缩放、旋转和移动等操作。通过结合控件和图形API,我们可以构建出具有交互性的图像处理...
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 :适用于您的前
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环境。 #### 基本文件操作命令 1. **cat** - 用于查看文件内容。 - 示例: `cat filename` 可以显示文件内容。 2. **cd** - 改变当前...
更漂亮 devServer :chequered_flag: 快速开始 # Download repository: git clone https://github.com/fedorovsky/simple-boilerplate simple-boilerplate # Go to the app: cd simple-boilerplate # Install ...
对于乘法和除法运算,可以使用移位操作来替代,如`val 等同于`val * 8`,这通常更快。不过,要注意移位操作可能会降低代码可读性,需适当添加注释。 **J2EE篇**: 针对JSP、EJB和JDBC应用,有特定的优化策略: 1...
巴比龙新的一天 Papillon的新时代是我的大多数Web项目的主题。 它使用开发框架和自定义javascript库,可帮助您快速轻松地开发基于Web的应用程序...git clone https://github.com/ghaoil/papillon-new-day.git ./new-day
**问题**: `String s=new String("xyz");`创建了几个`String`对象? 二者之间有什么区别? **答案**: 这行代码创建了两个`String`对象:一个是堆内存中的新对象,另一个是字符串常量池中的对象。“xyz”这个字符串...
:sparkles: 最小 :red_heart: 清洁| :rocket: 更快 :mobile_phone: PWA :play_button: 感谢@alexbrown提供了这个很棒的轻量级Gridsome Starter主题-https: :hugging_face: 此主题适合状态网站或Notes。 使用...
这次长时间未更新一方面是因为工作和生活的关系,另外一方面也是为了抗议那些盗用我东西的人或网站盗用行为可耻,这次我停更了3个版本就是因为这些垃圾。如果你们继续盗用,我将永久停更。另外,所有加群的人,加...
这些只是Java后端技术的一部分,还有更多的高级主题如并发编程、JVM内存模型、分布式系统、性能优化等,都需要不断学习和实践。通过深入理解和应用这些知识点,可以提升个人的Java技术水平,从而在面试和工作中...
Angular 中后台前端解决方案-NgAlain 介绍 ...安装 NgAlain 非常简单,只需要使用以下命令行安装:ng new demo --style less cd demo ng add ng-alain ng serve,然后 clone git 仓库:$ git clone --depth=1 ...
在Java编程中,优化技能是提高程序效率和性能...以上这些优化策略可以帮助开发者编写更高效、运行更快的Java代码,尤其是在处理大规模并发和大数据量时。在实际开发中,应根据具体应用的需求和环境选择合适的优化方法。
【标题】"rails-airbnb-clone" 是一个基于Ruby on Rails框架开发的项目,旨在模仿知名住宿预订平台Airbnb的功能和用户体验。这个项目由一个团队合作完成,展示了一个实际的Web应用程序开发流程,特别是针对那些熟悉...
### Git基本用法详解 #### 一、Git命令初识 **Git** 是一款非常流行的分布式版本控制系统,广泛应用于软件开发和其他需要版本控制的场景。...这些知识将帮助您更高效地使用Git进行版本控制和团队协作。
.proto文件是protobuf的数据模型定义文件,它采用类似于XML或JSON的文本格式,但更紧凑且解析速度快。开发者在.proto文件中定义消息类型、服务接口等,这些定义被编译后会生成相应的强类型数据结构。 例如: ```...
- Java创建对象的方式:可以通过new关键字直接创建,也可以通过反射机制、clone方法或反序列化等方式创建。 - 序列化和反序列化:序列化是将对象的状态信息转换为可以存储或传输的形式的过程,反序列化则是把序列...
转到Hugo Releases并下载适合您的OS和体系结构的版本。 保存在您的PATH主要的可执行文件雨果(或hugo.exe在Windows上)的地方,我们会在接下来的步骤中使用它。 安装Hugo上提供了更完整的说明。 创建一个新站点并...