首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个com.rits.cloning.Cloner很昂贵吗?

创建一个com.rits.cloning.Cloner很昂贵吗?
EN

Stack Overflow用户
提问于 2017-02-21 20:03:52
回答 1查看 1.2K关注 0票数 2

所有的例子都说它是线程安全,并且有这样的例子:

代码语言:javascript
复制
Cloner cloner=new Cloner();
MyClass clone=cloner.deepClone(o);

在我的代码中,我就是这样做的:每次克隆时都创建一个新的。因此,问题是:这个和昂贵的对象应该创建一次并重复使用,还是正在创建一个新的对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 16:34:43

使用此测试:

代码语言:javascript
复制
@Test
    public void loadTestCloner() {
        Calendar cal = GregorianCalendar.getInstance();

        long timer = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            Cloner c1 = new Cloner();
            Calendar x = c1.deepClone(cal);
        }
        System.out.println("total time for new one each time: [" + (System.currentTimeMillis() - timer) + "]ms");

        long timer2 = System.currentTimeMillis();
        Cloner c2 = new Cloner();
        for (int i = 0; i < 100000; i++) {
            Calendar x = c2.deepClone(cal);
        }
        System.out.println("total time for reused one: [" + (System.currentTimeMillis() - timer2) + "]ms");
    }

与Calander的结果:

  • 每次新一次的总时间:644 one
  • 重复使用的总时间:39 one

使用我们的复杂对象:

  • 每次新一次的总时间:9585 one
  • 重复使用的总时间:416 one

只需使用1个对象并使用“超时”克隆:

  • 每次新一次的总时间:13 one
  • 重复使用的总时间: ms

所以我的结论是,虽然时间不多,而且因为它是线程安全,所以最好只做一次并重用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42376886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档