【发布时间】:2017-04-09 19:18:32
【问题描述】:
我这样说对吗:
public static void MethodName{bool first, bool second, bool third}
{
//Do something
}
比这更有效率:
public static void MethodName{bool [] boolArray}
{
bool first = boolArray[0];
bool second = boolArray[1];
bool third = boolArray[2];
//Do something
}
我的想法是,他们都必须声明第一、第二和第三——只是在不同的地方。但是对于第二个,它必须将其添加到一个数组中,然后再次解包。
除非你像这样声明数组:
MethodName(new[] { true, true, true });
在哪种情况下我不确定哪个更快?
我之所以问是因为我正在考虑使用第二个,但想知道这对性能是否/有什么影响。
在这种情况下,性能并不是特别重要,但澄清这一点对我会有所帮助。
另外,第二个的优点是你可以传递任意数量的值,而且我认为它也更容易阅读?
我之所以考虑使用它,是因为已经有大约 30 个参数被传递到该方法中,我觉得继续添加更多参数会变得令人困惑。所有这些布尔值都密切相关,所以我认为打包它们可能会使代码更易于管理。
我正在处理现有代码,花时间重新设计方法以减少传递给方法的参数数量不在我的项目范围内,但我认为了解此方法的含义是一种很好的做法改变。
【问题讨论】:
-
高效如何?在调用不同方法所花费的时间方面更有效?在用于参数的内存方面更有效?在调试这种方法的时间(即开发时间)方面效率更高?
-
即使执行大量操作,也可能没有明显的性能变化。如果您想“传递任意数量的值”,
params关键字也值得研究 see here -
在这种情况下我不确定哪个更快? - 运行这两种方法并比较哪个更快
-
过于简单的性能分析 - 差别很小:rextester.com/ZWNB22061 在某处添加单个数据库调用,这将不会成为一百万年后的瓶颈。
-
我已经添加了一个答案,但是 StackOverflow 应该添加一种新的关闭投票,其中应该包含这个标题:过早的优化是万恶之源。哈哈
标签: c#