【发布时间】:2018-09-05 14:49:54
【问题描述】:
我正在尝试编写 C# 游戏框架,所以性能在这里很关键。
这是我找到的reference。
问题是,我们如何知道结构是否仍在 CPU 缓存中?
如果我们不能,那么将结构推送到内存缓存的场景是什么。
例如,将结构推送到 List 然后稍后访问它们,它是否仍然在 CPU 缓存上?
【问题讨论】:
-
一般来说,导致某些东西从缓存中被驱逐的原因是其他东西想要/需要进入同一缓存行,即通常另一个线程推出您的缓存值。
-
这个问题的答案是“视情况而定”。
-
并非您为游戏开发的所有内容都对“性能至关重要”。事实上,你甚至可能因过度优化代码而损失的时间比获得的时间要多得多。例如,如果您寻找一些更快的代码,而每个应用程序只执行一次,您真的会关心 1 纳秒吗?
-
@HimBromBeere 我知道这应该依赖于语义而不是性能。但这是一个服务器端程序,我需要处理大量用户和游戏循环。
-
首先,如果您有什么需要优化的地方,您会来找我们提供基准测试。
标签: c# .net performance cpu-cache