1

在 SQL Server 中,当我想检查性能时,我清除所有缓冲区- 以获得真实结果:我使用

  CHECKPOINT 1
  DBCC DROPCLEANBUFFERS
  dbcc FREEPROCCACHE 

然后我检查之间的差异GetDate()'s

我应该在 C# 中使用什么命令来清除任何缓冲区/“速度助手”机制? (我打算使用秒表)。

谢谢。

4

1 回答 1

1

.NET 程序有很多“缓存”,并不是所有的都可以清除。您的 CPU 缓存不仅由您的进程填充,还由您计算机上运行的其他进程填充。您在第一次调用函数时会产生编译函数的抖动,这使得第一次迭代比任何其他迭代都长得多。如果您使用任何类型的 I/O,那么您也拥有这些缓存和缓冲区。

此外,您为什么要清除缓存?他们在那里帮助你。在现实世界中,缓存命中将有助于您的性能 - 为什么不在考虑缓存和缓冲区的同时衡量程序的性能呢?

无论如何,我认为您应该使用分析器而不是 aStopwatch来衡量您的表现。SQL Server 也是如此。

于 2012-04-03T20:14:28.107 回答