【发布时间】:2016-12-19 22:24:59
【问题描述】:
在性能方面这样做有什么不同吗?:
public static Class StaticTestClass()
{
public static void Function(object param) => //Do stuff with "param"
}
还有这个:
public Class ConstructedTestClass()
{
private object classParam;
public ConstructedTestClass(object param)
{
classParam = param;
}
public void Function() => //Do stuff with "classParam"
}
我认为如果执行一次不会有任何性能差异,但是如果我必须执行多次,并且多次调用Function() 怎么办?
ConstructedTestClass 的多个实例会影响内存吗?
并且使用参数调用Function 和StaticTestClass 会对性能产生任何影响吗?
PS:有类似的问题,但我找不到一个可以解决多次调用的性能问题。
编辑:我做了一些测试,结果如下:
使用1000000000 迭代并在每次迭代中创建一个ConstructedClass。
静态方式:72542ms
构造方式:83579ms
在这种情况下静态方式更快,然后我尝试在每次调用Function()时不创建一个类,结果如下:[100000000 samples]
静态方式:7203ms
构造方式:7259ms
在这种情况下几乎没有区别,所以我想我可以做任何我最喜欢的事情,因为我不会创建 1000000000 个类的实例。
【问题讨论】:
-
你说过 很多次 .. 但是有多少次?有所作为可能并不过分。您想比较这两种方法,只需尝试它们并使用
Stopwatch类来测量时间。 -
有许多类似的问题很容易被重复。但更重要的是您是否真的分析了代码以查看是否存在足够重要的差异?我猜你没有,因为如果你有,你会发现差异如此之小,以至于几乎不可能正确测量。设计适当的应用程序比担心这种级别的微优化要好得多。
-
@null:请将您的测量结果作为答案发布...不在您的问题中。
标签: c# performance class constructor static