gpt4 book ai didi

c# - 检测不可变对象(immutable对象)的高效方法?

转载 作者:太空狗 更新时间:2023-10-30 00:19:28 26 4
gpt4 key购买 nike

我有一个实用程序,旨在在我们的系统中传递对象。因为它是一个多线程环境,该实用程序对其传递的每个对象进行深度复制以防止任何线程安全问题。我正在努力将我们的系统转换为使用不可变对象(immutable对象)来消除对这个副本的需要。我想知道检测对象不可变的最佳(最快)方法是什么?

我的第一个想法是选择我们放置在所有不可变对象(immutable对象)上的属性 (MessageAttribute)。正如您从下面的性能配置文件中看到的那样,它受到了很大的打击(大约是我所有其他检查的执行时间的 10 倍)。

enter image description here

我还能如何检测我的不可变对象(immutable对象)通过?我可以做一个 typeof() 比较,这看起来性能更好,但这似乎很笨拙,而且随着我们一直添加更多不可变对象(immutable对象),维护起来会很困难。

编辑: 我忘了提到为了分析的目的, bool 值被重构为变量,实际上,表达式 who 的结果存储在 isDefined 中是实际上在 else if 语句中,因此命中率比此配置文件中显示的少 10 倍(虽然我更关心平均执行时间而不是绝对执行时间)。

最佳答案

创建一个接口(interface)(例如 IImmutable)并在所有不可变类上使用它。

您只需使用 typeof() 检查此接口(interface)以检测不可变。

typeof() 是编译时检查,因此不会影响性能。

关于c# - 检测不可变对象(immutable对象)的高效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20269310/

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