gpt4 book ai didi

c# - 静态类和单例类性能之间有什么区别(内存管理)

转载 作者:行者123 更新时间:2023-11-30 21:54:57 25 4
gpt4 key购买 nike

我读了this关于 https://stackoverflow.com/ 的文章并注意这句话:

Heavy usage of static classes and methods, for simplicity and better performance.

我的问题是,静态性能和单例性能有什么区别吗?如果有,为什么?

最佳答案

差别不大。与往常一样,如果您有疑问,请进行介绍 - 但我非常怀疑您会发现任何有趣的东西。

静态方法具有三个主要优点:

  • 无需传递隐式的this
  • 没有虚方法调用
  • 没有空检查

通过不使用 virtual 关键字和不实现接口(interface)来避免虚拟方法调用。它们还会在运行时进行评估,并在可能的情况下进行优化。

传递 thisstruct 来说可能很棘手,但这不是您通常实现单例的方式。对于普通引用类型,这可能是一个简单的按寄存器传递引用。

最后一点也很明显 - 由于 C# 中的约定,如果您尝试在 null 引用上调用方法,您应该得到一个 NullReferenceException - 即使该方法实际上根本不使用 this

但是,性能并不是唯一有用的指标。仔细想想,静态类和静态方法与功能模块和函数没有什么区别。我认为这是原始文章最暗示的内容 - 如果做得好,函数式编程比尝试将您的代码放入一些任意定义的类要简单得多。我假设虽然有很多静态方法(函数),但很少有静态字段 - 如果状态变化失控,则很难管理和理解。这双重适用于共享状态,您很难找到比公共(public)静态字段更共享的状态。

再次重申 - 性能只是一回事。软件开发是一种平衡行为,专注于一个指标是不行的。如果您过于关注(低级)性能,您可能会错过维护和可读性,甚至错过高级性能优化。如果避免开销至关重要,请继续 - 使用静态字段和静态方法。如果您需要并行处理 10k 个请求,您可能需要大量低级优化。但请确保您知道这通常是一种权衡。

关于c# - 静态类和单例类性能之间有什么区别(内存管理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738754/

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