gpt4 book ai didi

c# - 在 C# 中使用参数的成本

转载 作者:IT王子 更新时间:2023-10-29 04:35:56 26 4
gpt4 key购买 nike

有人对在 C# 中使用参数传递方法参数有什么建议吗?我正在考虑对前 6 个参数进行重载,然后使用 params 功能对第 7 个参数进行重载。我的理由是避免参数功能所需的额外数组分配。这是针对一些高性能的实用方法。有什么建议吗?创建所有重载是否浪费代码?

最佳答案

老实说,每个人都在喊“过早的优化”,这让我有点烦恼。原因如下。

  1. 您说的很有道理,特别是,因为您已经表明您正在开发一个高性能库。
  2. 甚至 BCL 类(class)也遵循这种模式。考虑 string.FormatConsole.WriteLine 的所有重载。
  3. 很容易做对反对过早优化运动背后的整个前提是,当您为了优化性能而做一些棘手的事情时,您很可能会不小心破坏某些东西并使您的代码不易维护。我看不出这有什么危险;对于您自己以及任何可能处理您的代码的 future 开发人员,您应该非常直接地了解您正在做的事情。

此外,即使您剖析这两种方法的结果并且发现速度上的差异很小,内存分配问题仍然存在。为每个方法调用创建一个新数组需要分配更多内存,稍后需要进行垃圾回收。在某些需要“近乎”实时行为的场景中(例如算法交易,所在的领域),最小化垃圾收集与最大化执行速度同样重要。

因此,即使它为我赢得了一些反对票:我还是会坚持下去。

(对于那些声称“编译器肯定已经做了类似的事情”的人——我不太确定。首先,如果是这样的话,我不明白为什么 BCL 类会遵循这种模式,因为我已经提到过。但更重要的是,接受多个参数的方法和接受数组的方法之间存在很大的语义差异。只是因为一个可以用作另一个的替代并不意味着编译器会,或者应该尝试这样的替代。

关于c# - 在 C# 中使用参数的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3950580/

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