gpt4 book ai didi

Java: getInstance() 单例性能

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:09 25 4
gpt4 key购买 nike

我很难找到以对性能最友好的方式使用单例类的正确方法。我有 3 种方法,也许有人可以向我解释最有效的方法:

1:

public functionA() {
SingletonClassA.getInstance().callA();
SingletonClassA.getInstance().callB();
SingletonClassA.getInstance().callC();
SingletonClassA.getInstance().callD();
SingletonClassA.getInstance().callE();
}

2.

public functionA() {
SingletonClassA tmp = SingletonClassA.getInstance();
tmp.callA();
tmp.callB();
tmp.callC();
tmp.callD();
tmp.callE();
}

3.

SingletonClassA tmp = SingletonClassA.getInstance();       
public functionA() {
tmp.callA();
tmp.callB();
tmp.callC();
tmp.callD();
tmp.callE();
}

我看到使用方法 1 的代码,但我认为更好的方法是 2(如果其他函数也在使用 SingletonClassA,则为 3)。

我来自 c 开发,但我对 Java 及其引用资料了解不多。我只是希望它不消耗太多内存并且执行速度快。

最佳答案

在谈论性能时永远不要思考(或正确的措辞:假设/相信)。

相反:阅读有关 Java 即时编译器及其功能的信息。令人惊讶的是:大多数时候,JIT 会将像您这样的微观优化想法……付诸东流。如果您确实遇到问题,请只考虑性能问题。然后:学习使用 Java 分析器来衡量正在发生的事情。

含义:关注SOLID设计;编写可读、可维护的代码……通常会产生“好”的代码;并且比在 Java 中花时间在这些事情上更有意义。此外:如果您的代码是可维护的,那么为了解决某些性能问题而进行更改会容易得多。

(是的,应该避免犯愚蠢的错误;但第一个也是最大的错误是假设这样做与那样对性能有好/坏的影响)。

旁注:考虑不使用单例类,而是使用单个实例枚举类。

关于Java: getInstance() 单例性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com