【发布时间】:2009-07-26 14:21:23
【问题描述】:
假设您有一些方法可以在非静态类中设置为静态。
例如:
private double power(double a, double b)
{
return (Math.Pow(a, b));
}
您认为将方法签名更改为静态有什么好处吗?在上面的例子中:
private static double power(double a, double b)
{
return (Math.Pow(a, b));
}
即使有一些性能或内存增益,编译器不会将其作为编译时的简单优化吗?
编辑: 我正在寻找的是通过将方法声明为静态的好处。我知道这是常见的做法。我想了解它背后的逻辑。
当然,这种方法只是阐明我的意图的一个例子。
【问题讨论】:
-
@Everyone,我知道这是发展年代的一个“古老”问题,但它今天仍然相关。下面有很多优秀的答案。需要针对您的特定场景的实际性能数据?编写一个快速程序,该程序调用该方法的次数足够多(在
var start = DateTime.Now()和var end = DateTime.Now()之间),以便能够有足够大的经过时间进行比较。使用static运行几次,不使用static运行几次,然后比较差异。也许也可以打开 TaskManager 并观察每个场景的内存使用情况。 -
只是为了完整性,而不是比较两个
DateTime.Now()之间的差异,使用StopWatchclass。编辑 - 为什么?它比DateTime.Now()方式更准确、更易于使用。
标签: c# performance