【发布时间】:2020-04-20 06:15:54
【问题描述】:
我使用 C# 使用 struct 和 class 运行了一个小型测试...使用 WriteLine 在每个(控制台应用程序)上执行了一个简单的方法,并使用 System.Diagnostics.StopWatch 进行测量。
我的期望是 struct 会更快,但结果表明它们在性能上几乎相同。
由于堆具有更多的处理开销,因此对堆栈与堆的重视程度一直很高……我一直对我的代码保持警惕,认为堆栈是我想要的设计构造。
那么在虚拟执行系统(又名 CLR)中是否发生了其他一些事情,它正在做一些使堆栈和堆变得琐碎的优化?
我必须承认,我以前从未真正考虑过对此进行测试,也许我只是需要更复杂的测试才能真正看到差异?
想法?
干杯,罗伯。
【问题讨论】:
-
谈到性能时,上下文很重要。在没有看到您的代码的情况下,我们不可能告诉您为什么您没有得到预期的结果。您关于“堆具有更多处理开销”的说法是正确的,但只是在一定程度上。花费的不是访问堆上的项目,而是分配(并且在某种程度上,取消分配)内存。如果您想要一个合理的答案,您必须向我们展示您的代码。
标签: performance stack heap-memory