【问题标题】:How expensive is the new Gson() constructor in production?生产中的新 Gson() 构造函数有多贵?
【发布时间】:2018-05-12 06:00:16
【问题描述】:

我正在创建一个新的 Netty 管道,我正在尝试:

  1. 避免过早优化。
  2. 编写易于向我的一位实习生解释的代码。

这种工厂方法当然很容易解释:

public String toJSON()
{
    Gson gson = new Gson();
    return gson.toJson(this);
}

somewhat related question 中,OP 询问是否可以(意味着线程安全)重用 Gson 对象的单个实例。我的问题略有不同:是否有充分的理由分享对象?如果是这样,在什么复杂程度下共享 Gson 对象是值得的?取舍在哪里?

【问题讨论】:

    标签: gson premature-optimization


    【解决方案1】:

    它很昂贵,而且成本与您使用 Gson 绑定的数据模型的复杂性成比例。我写了一篇帖子,Reflection Machines,解释了为什么创建 Gson 实例的成本很高,应该尽量减少。

    【讨论】:

    • 我已阅读您的帖子,但我不明白它如何适用于上述基本问题。您的文章提到了反射所涉及的工作量,但 new Gson() 构造函数本身并不进行反射。是的,gson.toJSon(this) 确实会进行一些反思,但这是使用 JSON 所固有的。最终,会发生一些反思。
    • 每个 Gson 实例缓存它所做的所有反射。如果您在每次使用时创建新的 Gson 实例,则它必须在每次使用时完成所有反射工作。
    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 2016-03-31
    • 1970-01-01
    • 2011-05-14
    • 2017-03-19
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多