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的时候
一定要想清楚再用,浅拷贝使用不当会出现很多问题。
分享到:
相关推荐
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 :适用于您的前
更漂亮 devServer :chequered_flag: 快速开始 # Download repository: git clone https://github.com/fedorovsky/simple-boilerplate simple-boilerplate # Go to the app: cd simple-boilerplate # Install ...
巴比龙新的一天 Papillon的新时代是我的大多数Web项目的主题。 它使用开发框架和自定义javascript库,可帮助您快速轻松地开发基于Web的应用程序...git clone https://github.com/ghaoil/papillon-new-day.git ./new-day
:sparkles: 最小 :red_heart: 清洁| :rocket: 更快 :mobile_phone: PWA :play_button: 感谢@alexbrown提供了这个很棒的轻量级Gridsome Starter主题-https: :hugging_face: 此主题适合状态网站或Notes。 使用...
这次长时间未更新一方面是因为工作和生活的关系,另外一方面也是为了抗议那些盗用我东西的人或网站盗用行为可耻,这次我停更了3个版本就是因为这些垃圾。如果你们继续盗用,我将永久停更。另外,所有加群的人,加...
转到Hugo Releases并下载适合您的OS和体系结构的版本。 保存在您的PATH主要的可执行文件雨果(或hugo.exe在Windows上)的地方,我们会在接下来的步骤中使用它。 安装Hugo上提供了更完整的说明。 创建一个新站点并...
该入门工具随附了主要的Gatsby配置文件,您可能需要使用React的快速应用生成器来快速启动和运行。 还有其他更具体的想法吗? 您可能需要查看我们充满活力的集合。 :rocket: 快速开始 创建一个Gatsby网站。 使用...
该入门工具随附了主要的Gatsby配置文件,您可能需要使用React的快速应用生成器来快速启动和运行。 还有其他更具体的想法吗? 您可能需要查看我们充满活力的集合。 :rocket: 快速开始创建一个Gatsby网站。 使用...
Mazer仪表板Mazer是一个管理仪表板模板,可以帮助您更快地开发。 用Bootstrap 5制成。没有jQuery依赖性。安装克隆此存储库或下载zip git clone https://github.com/zuramai/mazer 打开mazer/dist/index.html查看仪表...
找到更多 笔记搜索由超快速 设置 使用Gatsby入门代码注释 本指南将引导您通过Gatsby Starter代码说明设置代码说明。 步骤1:入门安装 使用gatsby-cli : gatsby new code-notes ...
(g ++-4.7.2或更高版本)或(clang-3.3或更高版本) CMake的版本至少为2.8.9。 建设快新词 $ git clone https://github.com/Lapis-Hong/fast-xinci.git $ cd fast-xinci $ mkdir build && cd build && cmake .. $...
无服务器Node.js项目框架 AWS Lambda上的Node.js无服务器项目的程序... 使用以下命令克隆此存储库的主分支$ git clone --single-branch git@github.com:makenew/serverless-nodejs.git <new>$ cd <new>(可选)使用$ gi
新项目模板 我的新项目的个人模板。... git clone git@github.com:benwells/node-project-template.git cd node-project-template npm install --save-dev grunt serve 在浏览器中导航到并查看您的成功!
要求雨果0.68.0或更高版本安装创建您的网站(如果尚未创建) hugo new site my-site -f=yamlcd my-site将主题添加为git clone cd themesgit clone https://github.com/gurusabarish/hugo-profile.git转到配置文件,...
模板,用于快速启动和运行 Scalatra Web 服务。 使用这个模板 版本0.13.13或更高版本 跑步: $ sbt new scalatra/scalatra.g8 $ cd $ sbt > jetty:start 在浏览器中打开 。 修改此模板 将 GitHub 上的到您的帐户...
这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是要寻找出不变的东西,并将它和变化的东 西分离开来,这需要非常的智慧和经验。 而 GoF 的设计模式是在这方面开始探索的一块里程碑。 J2EE...
该入门工具随附了主要的Gatsby配置文件,您可能需要使用React的快速应用生成器来快速启动和运行。 还有其他更具体的想法吗? 您可能需要查看我们充满活力的集合。 :rocket: 快速开始 创建一个Gatsby网站。 使用...
$ git clone https://github.com/djmadeira/lightweight-new-tab-page.git $ npm install $ grunt 转到 Chrome -> 扩展程序,单击“加载解压缩的扩展程序”并选择 dist 文件夹。 计划功能 我一直打算保持这种简单和...