我创建了一个控制台应用程序,在其中尝试了 2 种从 sql 数据库获取值的不同方法(= 在同一台服务器上)。当我添加一个秒表来检查哪个是最快的方法时,我有时会得到第一个,有时会得到第二个。什么可以为此负责?是否可以在相同条件下运行测试?我应该运行这个异步吗?
我的控制台代码可以在这里找到:http: //pastie.org/7920175
我创建了一个控制台应用程序,在其中尝试了 2 种从 sql 数据库获取值的不同方法(= 在同一台服务器上)。当我添加一个秒表来检查哪个是最快的方法时,我有时会得到第一个,有时会得到第二个。什么可以为此负责?是否可以在相同条件下运行测试?我应该运行这个异步吗?
我的控制台代码可以在这里找到:http: //pastie.org/7920175
我建议使用ANTS 性能配置文件
方法的性能取决于许多因素,而不仅仅是服务器。
我认为您可以使用这个不错的工具来检查您的方法性能。
SpeedTester myTest = new SpeedTester([method to test]);
myTest.RunTest();
StopWatch
可能不像你喜欢的那样准确。
您可以使用非常方便的 Visual Studio 2012 Performance Analysis(如果您使用的是 vs2012),否则您可能需要安装 Profiler Tool,例如YourKit
您说这两种方法从 SQL 数据库中检索数据。这意味着您不仅要测量您编写的代码,还要测量可能表现不同的第 3 方操作(例如从数据库中读取)。这可能是两种方法从一次运行到另一次运行返回不同时间的原因之一
您测试的方法多久调用一次?每次运行它们一千次,看看哪一个从长远来看更快。
此外,如果您的所有方法都在包装一些 SQL,那么在对相同数据进行第一次查询之后,您可能看不到太大的差异。您可以考虑在每次尝试之前清除查询缓存。